diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2018-08-15 15:19:36 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2018-08-15 15:19:36 +0200 |
commit | 7870e75d7da7a03a62ca82406bc2cf6dbb92f99e (patch) | |
tree | 291ee92e7021a55d8bb0edc139470264bcbeed75 /crenshaw | |
parent | e2a3a2b217e8dcc1e3f4ec67c00a7a98d07fa698 (diff) | |
download | compilertests-7870e75d7da7a03a62ca82406bc2cf6dbb92f99e.tar.gz compilertests-7870e75d7da7a03a62ca82406bc2cf6dbb92f99e.tar.bz2 |
crenshaw: some testing on 64-bit
Diffstat (limited to 'crenshaw')
-rw-r--r-- | crenshaw/emul.c | 2 | ||||
-rw-r--r-- | crenshaw/main.pas | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/crenshaw/emul.c b/crenshaw/emul.c index 2cdc04c..e84c4b7 100644 --- a/crenshaw/emul.c +++ b/crenshaw/emul.c @@ -164,7 +164,7 @@ int main( int argc, char *argv[] ) } } - cs_free( instr ); + cs_free( instr, 1 ); cs_close( &cs ); uc_close( uc ); diff --git a/crenshaw/main.pas b/crenshaw/main.pas index dd49dd1..3e9e0a4 100644 --- a/crenshaw/main.pas +++ b/crenshaw/main.pas @@ -42,6 +42,11 @@ begin IsDigit := c in ['0'..'9']; end; +function IsAddop(c: char): boolean; +begin + IsAddop := c in ['+', '-']; +end; + function GetName : char; begin if not IsAlpha(Look) then Expected('Name'); @@ -135,7 +140,10 @@ end; procedure Expression; begin - Term; + if IsAddop(Look) then + EmitLn('MOV eax, 0') + else + Term; while Look in ['+', '-'] do begin EmitLn('push eax'); |