diff options
Diffstat (limited to 'src/lib/libcrypto/perlasm')
-rw-r--r-- | src/lib/libcrypto/perlasm/x86asm.pl | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/perlasm/x86ms.pl | 1 | ||||
-rw-r--r-- | src/lib/libcrypto/perlasm/x86nasm.pl | 8 | ||||
-rw-r--r-- | src/lib/libcrypto/perlasm/x86unix.pl | 7 |
4 files changed, 14 insertions, 4 deletions
diff --git a/src/lib/libcrypto/perlasm/x86asm.pl b/src/lib/libcrypto/perlasm/x86asm.pl index 7c675e3ced..60233f80e8 100644 --- a/src/lib/libcrypto/perlasm/x86asm.pl +++ b/src/lib/libcrypto/perlasm/x86asm.pl | |||
@@ -130,4 +130,6 @@ BSDI - a.out with a very primative version of as. | |||
130 | EOF | 130 | EOF |
131 | } | 131 | } |
132 | 132 | ||
133 | sub main'align() {} # swallow align statements in 0.9.7 context | ||
134 | |||
133 | 1; | 135 | 1; |
diff --git a/src/lib/libcrypto/perlasm/x86ms.pl b/src/lib/libcrypto/perlasm/x86ms.pl index fbb4afb9bd..b6bd744057 100644 --- a/src/lib/libcrypto/perlasm/x86ms.pl +++ b/src/lib/libcrypto/perlasm/x86ms.pl | |||
@@ -160,6 +160,7 @@ sub main'not { &out1("not",@_); } | |||
160 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } | 160 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } |
161 | sub main'ret { &out0("ret"); } | 161 | sub main'ret { &out0("ret"); } |
162 | sub main'nop { &out0("nop"); } | 162 | sub main'nop { &out0("nop"); } |
163 | sub main'movz { &out2("movzx",@_); } | ||
163 | 164 | ||
164 | sub out2 | 165 | sub out2 |
165 | { | 166 | { |
diff --git a/src/lib/libcrypto/perlasm/x86nasm.pl b/src/lib/libcrypto/perlasm/x86nasm.pl index 30346af4ea..5009acb4b3 100644 --- a/src/lib/libcrypto/perlasm/x86nasm.pl +++ b/src/lib/libcrypto/perlasm/x86nasm.pl | |||
@@ -86,7 +86,7 @@ sub get_mem | |||
86 | { | 86 | { |
87 | my($size,$addr,$reg1,$reg2,$idx)=@_; | 87 | my($size,$addr,$reg1,$reg2,$idx)=@_; |
88 | my($t,$post); | 88 | my($t,$post); |
89 | my($ret)="["; | 89 | my($ret)="$size ["; |
90 | $addr =~ s/^\s+//; | 90 | $addr =~ s/^\s+//; |
91 | if ($addr =~ /^(.+)\+(.+)$/) | 91 | if ($addr =~ /^(.+)\+(.+)$/) |
92 | { | 92 | { |
@@ -169,6 +169,7 @@ sub main'not { &out1("not",@_); } | |||
169 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } | 169 | sub main'call { &out1("call",($_[0]=~/^\$L/?'':'_').$_[0]); } |
170 | sub main'ret { &out0("ret"); } | 170 | sub main'ret { &out0("ret"); } |
171 | sub main'nop { &out0("nop"); } | 171 | sub main'nop { &out0("nop"); } |
172 | sub main'movz { &out2("movzx",@_); } | ||
172 | 173 | ||
173 | sub out2 | 174 | sub out2 |
174 | { | 175 | { |
@@ -176,6 +177,11 @@ sub out2 | |||
176 | my($l,$t); | 177 | my($l,$t); |
177 | 178 | ||
178 | push(@out,"\t$name\t"); | 179 | push(@out,"\t$name\t"); |
180 | if ($name eq "lea") | ||
181 | { | ||
182 | $p1 =~ s/^[^\[]*\[/\[/; | ||
183 | $p2 =~ s/^[^\[]*\[/\[/; | ||
184 | } | ||
179 | $t=&conv($p1).","; | 185 | $t=&conv($p1).","; |
180 | $l=length($t); | 186 | $l=length($t); |
181 | push(@out,$t); | 187 | push(@out,$t); |
diff --git a/src/lib/libcrypto/perlasm/x86unix.pl b/src/lib/libcrypto/perlasm/x86unix.pl index 53ad5f4927..9717d18557 100644 --- a/src/lib/libcrypto/perlasm/x86unix.pl +++ b/src/lib/libcrypto/perlasm/x86unix.pl | |||
@@ -143,12 +143,12 @@ sub main'shl { &out2("sall",@_); } | |||
143 | sub main'shr { &out2("shrl",@_); } | 143 | sub main'shr { &out2("shrl",@_); } |
144 | sub main'xor { &out2("xorl",@_); } | 144 | sub main'xor { &out2("xorl",@_); } |
145 | sub main'xorb { &out2("xorb",@_); } | 145 | sub main'xorb { &out2("xorb",@_); } |
146 | sub main'add { &out2("addl",@_); } | 146 | sub main'add { &out2($_[0]=~/%[a-d][lh]/?"addb":"addl",@_); } |
147 | sub main'adc { &out2("adcl",@_); } | 147 | sub main'adc { &out2("adcl",@_); } |
148 | sub main'sub { &out2("subl",@_); } | 148 | sub main'sub { &out2("subl",@_); } |
149 | sub main'rotl { &out2("roll",@_); } | 149 | sub main'rotl { &out2("roll",@_); } |
150 | sub main'rotr { &out2("rorl",@_); } | 150 | sub main'rotr { &out2("rorl",@_); } |
151 | sub main'exch { &out2("xchg",@_); } | 151 | sub main'exch { &out2($_[0]=~/%[a-d][lh]/?"xchgb":"xchgl",@_); } |
152 | sub main'cmp { &out2("cmpl",@_); } | 152 | sub main'cmp { &out2("cmpl",@_); } |
153 | sub main'lea { &out2("leal",@_); } | 153 | sub main'lea { &out2("leal",@_); } |
154 | sub main'mul { &out1("mull",@_); } | 154 | sub main'mul { &out1("mull",@_); } |
@@ -170,7 +170,7 @@ sub main'jc { &out1("jc",@_); } | |||
170 | sub main'jnc { &out1("jnc",@_); } | 170 | sub main'jnc { &out1("jnc",@_); } |
171 | sub main'jno { &out1("jno",@_); } | 171 | sub main'jno { &out1("jno",@_); } |
172 | sub main'dec { &out1("decl",@_); } | 172 | sub main'dec { &out1("decl",@_); } |
173 | sub main'inc { &out1("incl",@_); } | 173 | sub main'inc { &out1($_[0]=~/%[a-d][hl]/?"incb":"incl",@_); } |
174 | sub main'push { &out1("pushl",@_); $stack+=4; } | 174 | sub main'push { &out1("pushl",@_); $stack+=4; } |
175 | sub main'pop { &out1("popl",@_); $stack-=4; } | 175 | sub main'pop { &out1("popl",@_); $stack-=4; } |
176 | sub main'pushf { &out0("pushf"); $stack+=4; } | 176 | sub main'pushf { &out0("pushf"); $stack+=4; } |
@@ -179,6 +179,7 @@ sub main'not { &out1("notl",@_); } | |||
179 | sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } | 179 | sub main'call { &out1("call",($_[0]=~/^\.L/?'':$under).$_[0]); } |
180 | sub main'ret { &out0("ret"); } | 180 | sub main'ret { &out0("ret"); } |
181 | sub main'nop { &out0("nop"); } | 181 | sub main'nop { &out0("nop"); } |
182 | sub main'movz { &out2("movzbl",@_); } | ||
182 | 183 | ||
183 | # The bswapl instruction is new for the 486. Emulate if i386. | 184 | # The bswapl instruction is new for the 486. Emulate if i386. |
184 | sub main'bswap | 185 | sub main'bswap |