aboutsummaryrefslogtreecommitdiff
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>1999-07-12 18:12:43 +0000
committerDr. Stephen Henson <steve@openssl.org>1999-07-12 18:12:43 +0000
commitbbdb543844cd4f8f787b678e33466afc12eccd96 (patch)
tree6910cfcd6aa9f6c6fa01acdd31a410900cf9be14 /crypto/perlasm
parent5059658219465c2e3e15f45c5ca3a0d251cd5fba (diff)
downloadopenssl-bbdb543844cd4f8f787b678e33466afc12eccd96.zip
openssl-bbdb543844cd4f8f787b678e33466afc12eccd96.tar.gz
openssl-bbdb543844cd4f8f787b678e33466afc12eccd96.tar.bz2
More NASM support code it still doesn't work but it doesn't work less than it
didn't work before :-)
Diffstat (limited to 'crypto/perlasm')
-rw-r--r--crypto/perlasm/x86ms.pl10
-rw-r--r--crypto/perlasm/x86nasm.pl27
-rw-r--r--crypto/perlasm/x86unix.pl10
3 files changed, 42 insertions, 5 deletions
diff --git a/crypto/perlasm/x86ms.pl b/crypto/perlasm/x86ms.pl
index b8b1909..51dcce0 100644
--- a/crypto/perlasm/x86ms.pl
+++ b/crypto/perlasm/x86ms.pl
@@ -51,6 +51,16 @@ sub main'DWP
&get_mem("DWORD",@_);
}
+sub main'BC
+ {
+ return @_;
+ }
+
+sub main'DWC
+ {
+ return @_;
+ }
+
sub main'stack_push
{
local($num)=@_;
diff --git a/crypto/perlasm/x86nasm.pl b/crypto/perlasm/x86nasm.pl
index 3aab34a..b4da364 100644
--- a/crypto/perlasm/x86nasm.pl
+++ b/crypto/perlasm/x86nasm.pl
@@ -27,7 +27,14 @@ $label="L000";
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
{
@@ -51,6 +58,16 @@ sub main'DWP
&get_mem("DWORD",@_);
}
+sub main'BC
+ {
+ return "BYTE @_";
+ }
+
+sub main'DWC
+ {
+ return "DWORD @_";
+ }
+
sub main'stack_push
{
my($num)=@_;
@@ -69,7 +86,7 @@ sub get_mem
{
my($size,$addr,$reg1,$reg2,$idx)=@_;
my($t,$post);
- my($ret)="[$size ";
+ my($ret)="[";
$addr =~ s/^\s+//;
if ($addr =~ /^(.+)\+(.+)$/)
{
@@ -192,7 +209,7 @@ sub using486
sub main'file
{
- push(@out, "segment .text");
+ push(@out, "segment .text\n");
}
sub main'function_begin
@@ -201,7 +218,7 @@ sub main'function_begin
push(@labels,$func);
my($tmp)=<<"EOF";
-GLOBAL _$func
+global _$func
_$func:
push ebp
push ebx
@@ -216,7 +233,7 @@ sub main'function_begin_B
{
my($func,$extra)=@_;
my($tmp)=<<"EOF";
-GLOBAL _$func
+global _$func
_$func:
EOF
push(@out,$tmp);
diff --git a/crypto/perlasm/x86unix.pl b/crypto/perlasm/x86unix.pl
index bc9e42e..8c456b1 100644
--- a/crypto/perlasm/x86unix.pl
+++ b/crypto/perlasm/x86unix.pl
@@ -100,6 +100,16 @@ sub main'BP
return(&main'DWP(@_));
}
+sub main'BC
+ {
+ return @_;
+ }
+
+sub main'DWC
+ {
+ return @_;
+ }
+
#sub main'BP
# {
# local($addr,$reg1,$reg2,$idx)=@_;