sub main'asm_init_output { @out=(); }
sub main'asm_get_output { return(@out); }
sub main'get_labels { return(@labels); }
-sub main'external_label { push(@labels,@_); push(@out, "EXTERN\t$_[0]"); }
+
+sub main'external_label
+{
+ push(@labels,@_);
+ foreach (@_) {
+ push(@out, "extern\t_$_\n");
+ }
+}
sub main'LB
{
&get_mem("DWORD",@_);
}
+sub main'BC
+ {
+ return "BYTE @_";
+ }
+
+sub main'DWC
+ {
+ return "DWORD @_";
+ }
+
sub main'stack_push
{
my($num)=@_;
{
my($size,$addr,$reg1,$reg2,$idx)=@_;
my($t,$post);
- my($ret)="[$size ";
+ my($ret)="[";
$addr =~ s/^\s+//;
if ($addr =~ /^(.+)\+(.+)$/)
{
sub main'file
{
- push(@out, "segment .text");
+ push(@out, "segment .text\n");
}
sub main'function_begin
push(@labels,$func);
my($tmp)=<<"EOF";
-GLOBAL _$func
+global _$func
_$func:
push ebp
push ebx
{
my($func,$extra)=@_;
my($tmp)=<<"EOF";
-GLOBAL _$func
+global _$func
_$func:
EOF
push(@out,$tmp);