]=, ^=, also *fixed variable sar in previous compilers*
This commit is contained in:
parent
2eea57df8a
commit
383d1fbe27
6 changed files with 123 additions and 5 deletions
2
01/in00
2
01/in00
|
@ -12240,7 +12240,7 @@ cc cc cc cc cc cc cc cc
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
03 f8 d3 f8 00 00 00 00
|
03 48 d3 f8 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
00 00 00 00 00 00 00 00
|
00 00 00 00 00 00 00 00
|
||||||
|
|
2
02/in01
2
02/in01
|
@ -12458,7 +12458,7 @@ the formatting changed appropriately.
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
;03;f8;d3;f8;00;00;00;00
|
;03;48;d3;f8;00;00;00;00
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
;00;00;00;00;00;00;00;00
|
;00;00;00;00;00;00;00;00
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
all: out02
|
all: out02
|
||||||
out02: in02
|
out02: in02 ../02/out01
|
||||||
../02/out01
|
../02/out01
|
||||||
out03: out02 in03
|
out03: out02 in03
|
||||||
./out02
|
./out02
|
||||||
|
|
113
03/in02
113
03/in02
|
@ -158,6 +158,10 @@ im
|
||||||
je
|
je
|
||||||
:-|= X|=Y
|
:-|= X|=Y
|
||||||
im
|
im
|
||||||
|
##5e. ascii '^'
|
||||||
|
je
|
||||||
|
:-^= X^=Y
|
||||||
|
im
|
||||||
##3c. ascii '<'
|
##3c. ascii '<'
|
||||||
je
|
je
|
||||||
:-<= X<=C / X<=imm
|
:-<= X<=C / X<=imm
|
||||||
|
@ -166,6 +170,10 @@ im
|
||||||
je
|
je
|
||||||
:->= X>=C / X>=imm
|
:->= X>=C / X>=imm
|
||||||
im
|
im
|
||||||
|
##5d. ascii ']'
|
||||||
|
je
|
||||||
|
:-]= X]=C / X]=imm
|
||||||
|
im
|
||||||
##3d. ascii '='
|
##3d. ascii '='
|
||||||
je
|
je
|
||||||
:-x= X=imm / X=:label / X=nY
|
:-x= X=imm / X=:label / X=nY
|
||||||
|
@ -322,6 +330,37 @@ jm
|
||||||
:-rl next line
|
:-rl next line
|
||||||
::|B
|
::|B
|
||||||
|B
|
|B
|
||||||
|
// deal with bitwise xor
|
||||||
|
::^=
|
||||||
|
im
|
||||||
|
--=?
|
||||||
|
cl
|
||||||
|
// put operand 1 in rbx,
|
||||||
|
im
|
||||||
|
--B1
|
||||||
|
cl
|
||||||
|
// operand 2 in rax
|
||||||
|
im
|
||||||
|
--A2
|
||||||
|
cl
|
||||||
|
// emit 'xor rax, rbx'
|
||||||
|
im
|
||||||
|
--^B
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl
|
||||||
|
// put rax in operand 1
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::^B
|
||||||
|
^B
|
||||||
// deal with left shift
|
// deal with left shift
|
||||||
::<=
|
::<=
|
||||||
im
|
im
|
||||||
|
@ -434,6 +473,62 @@ jm
|
||||||
:-rl next line
|
:-rl next line
|
||||||
::>I
|
::>I
|
||||||
>I
|
>I
|
||||||
|
// deal with arithmetic right shift
|
||||||
|
::]=
|
||||||
|
im
|
||||||
|
--=?
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--A1 put operand 1 in rax
|
||||||
|
cl
|
||||||
|
// look at 2nd operand (line[3])
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
##43. ascii 'C'
|
||||||
|
je
|
||||||
|
:-]c non-constant shift
|
||||||
|
// write sar rax,
|
||||||
|
im
|
||||||
|
--]I
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl
|
||||||
|
// now write immediate. calculate number
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--nu
|
||||||
|
cl
|
||||||
|
// we now have the shift amount in rax. write it to the file
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--wb
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--1A put rax back in operand 1
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::]I
|
||||||
|
]I
|
||||||
// left shift by cl
|
// left shift by cl
|
||||||
::<c
|
::<c
|
||||||
im
|
im
|
||||||
|
@ -470,6 +565,24 @@ jm
|
||||||
:-rl next line
|
:-rl next line
|
||||||
::>C
|
::>C
|
||||||
>C
|
>C
|
||||||
|
// arithmetic right shift by cl
|
||||||
|
::]c
|
||||||
|
im
|
||||||
|
--]C
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'sar rax, cl'
|
||||||
|
im
|
||||||
|
--1A put rax back in operand 1
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::]C
|
||||||
|
]C
|
||||||
// deal with set immediate (e.g. "A=d3, B=:label, C=1B")
|
// deal with set immediate (e.g. "A=d3, B=:label, C=1B")
|
||||||
::x=
|
::x=
|
||||||
im
|
im
|
||||||
|
|
7
03/in03
7
03/in03
|
@ -1,5 +1,10 @@
|
||||||
D|=C
|
|
||||||
|
D]=d7
|
||||||
e
|
e
|
||||||
|
|
||||||
|
D]=C
|
||||||
|
D^=C
|
||||||
|
D|=C
|
||||||
D&=C
|
D&=C
|
||||||
~C
|
~C
|
||||||
B|=A
|
B|=A
|
||||||
|
|
|
@ -70,7 +70,7 @@ shr rax, cl
|
||||||
shr rax, imm8
|
shr rax, imm8
|
||||||
>48 c1 e8 IMM8
|
>48 c1 e8 IMM8
|
||||||
sar rax, cl
|
sar rax, cl
|
||||||
>f8 d3 f8
|
>48 d3 f8
|
||||||
sar rax, imm8
|
sar rax, imm8
|
||||||
>48 c1 f8 IMM8
|
>48 c1 f8 IMM8
|
||||||
sub rsp, imm32
|
sub rsp, imm32
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue