Complete backport of i386 RC4 assembler module from HEAD.
authorAndy Polyakov <appro@openssl.org>
Wed, 1 Dec 2004 15:45:34 +0000 (15:45 +0000)
committerAndy Polyakov <appro@openssl.org>
Wed, 1 Dec 2004 15:45:34 +0000 (15:45 +0000)
crypto/perlasm/x86asm.pl
crypto/perlasm/x86ms.pl
crypto/perlasm/x86nasm.pl
crypto/perlasm/x86unix.pl

index 1cb96e914ab6f7d6ddb0fa59efd043825ea7701a..bef266707912bde492cf206075a2c7478aef01ee 100644 (file)
@@ -124,4 +124,6 @@ BSDI - a.out with a very primative version of as.
 EOF
        }
 
+sub main'align() {} # swallow align statements in 0.9.7 context
+
 1;
index fbb4afb9bda48c7110318cdaedd99efc628bdb67..b6bd744057e259336c65a52fc34fb510f13274e0 100644 (file)
@@ -160,6 +160,7 @@ sub main'not        { &out1("not",@_); }
 sub main'call  { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); }
 sub main'ret   { &out0("ret"); }
 sub main'nop   { &out0("nop"); }
+sub main'movz  { &out2("movzx",@_); }
 
 sub out2
        {
index 30346af4eac76960daf99677bc3499b435778139..502f155dd1f5a0756427388cba2a2310b781135a 100644 (file)
@@ -169,6 +169,7 @@ sub main'not        { &out1("not",@_); }
 sub main'call  { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); }
 sub main'ret   { &out0("ret"); }
 sub main'nop   { &out0("nop"); }
+sub main'movz  { &out2("movzx",@_); }
 
 sub out2
        {
index 10b669bf049e2fa9d788949f37ec7b6faa5b8685..c0cba05b075f2df34afd2eb2d1da721bcc26b473 100644 (file)
@@ -137,7 +137,7 @@ sub main'shl        { &out2("sall",@_); }
 sub main'shr   { &out2("shrl",@_); }
 sub main'xor   { &out2("xorl",@_); }
 sub main'xorb  { &out2("xorb",@_); }
-sub main'add   { &out2("addl",@_); }
+sub main'add   { &out2($_[0]=~/%[a-d][lh]/?"addb":"addl",@_); }
 sub main'adc   { &out2("adcl",@_); }
 sub main'sub   { &out2("subl",@_); }
 sub main'rotl  { &out2("roll",@_); }
@@ -164,7 +164,7 @@ sub main'jc { &out1("jc",@_); }
 sub main'jnc   { &out1("jnc",@_); }
 sub main'jno   { &out1("jno",@_); }
 sub main'dec   { &out1("decl",@_); }
-sub main'inc   { &out1("incl",@_); }
+sub main'inc   { &out1($_[0]=~/%[a-d][hl]/?"incb":"incl",@_); }
 sub main'push  { &out1("pushl",@_); $stack+=4; }
 sub main'pop   { &out1("popl",@_); $stack-=4; }
 sub main'pushf { &out0("pushf"); $stack+=4; }
@@ -173,6 +173,7 @@ sub main'not        { &out1("notl",@_); }
 sub main'call  { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); }
 sub main'ret   { &out0("ret"); }
 sub main'nop   { &out0("nop"); }
+sub main'movz  { &out2("movzb",@_); }
 
 # The bswapl instruction is new for the 486. Emulate if i386.
 sub main'bswap