-=, shifts, and more
This commit is contained in:
parent
092f4896a7
commit
2eea57df8a
2 changed files with 663 additions and 24 deletions
669
03/in02
669
03/in02
|
@ -97,7 +97,7 @@ je if it's a blank line,
|
||||||
im
|
im
|
||||||
##3a. ascii ':'
|
##3a. ascii ':'
|
||||||
je
|
je
|
||||||
:-ld label definition
|
:-:l label definition
|
||||||
im
|
im
|
||||||
##3f. ascii '?'
|
##3f. ascii '?'
|
||||||
je
|
je
|
||||||
|
@ -110,6 +110,26 @@ im
|
||||||
##78. ascii 'x'
|
##78. ascii 'x'
|
||||||
je
|
je
|
||||||
:-x# literal byte
|
:-x# literal byte
|
||||||
|
im
|
||||||
|
##31. ascii '1'
|
||||||
|
je
|
||||||
|
:-1= store byte
|
||||||
|
im
|
||||||
|
##32. ascii '2'
|
||||||
|
je
|
||||||
|
:-2= store word
|
||||||
|
im
|
||||||
|
##34. ascii '4'
|
||||||
|
je
|
||||||
|
:-4= store dword
|
||||||
|
im
|
||||||
|
##38. ascii '8'
|
||||||
|
je
|
||||||
|
:-8= store qword
|
||||||
|
im
|
||||||
|
##7e. ascii '~'
|
||||||
|
je
|
||||||
|
:-~x bitwise not
|
||||||
// look at the second character
|
// look at the second character
|
||||||
im
|
im
|
||||||
##1.
|
##1.
|
||||||
|
@ -124,7 +144,31 @@ BA
|
||||||
im
|
im
|
||||||
##2b. ascii '+'
|
##2b. ascii '+'
|
||||||
je
|
je
|
||||||
:-+=
|
:-+= X+=Y
|
||||||
|
im
|
||||||
|
##2d. ascii '-'
|
||||||
|
je
|
||||||
|
:--= X-=Y
|
||||||
|
im
|
||||||
|
##26. ascii '&'
|
||||||
|
je
|
||||||
|
:-&= X&=Y
|
||||||
|
im
|
||||||
|
##7c. ascii '|'
|
||||||
|
je
|
||||||
|
:-|= X|=Y
|
||||||
|
im
|
||||||
|
##3c. ascii '<'
|
||||||
|
je
|
||||||
|
:-<= X<=C / X<=imm
|
||||||
|
im
|
||||||
|
##3e. ascii '>'
|
||||||
|
je
|
||||||
|
:->= X>=C / X>=imm
|
||||||
|
im
|
||||||
|
##3d. ascii '='
|
||||||
|
je
|
||||||
|
:-x= X=imm / X=:label / X=nY
|
||||||
im
|
im
|
||||||
##20. ascii ' '
|
##20. ascii ' '
|
||||||
CA set ' ' as terminator
|
CA set ' ' as terminator
|
||||||
|
@ -144,6 +188,7 @@ je
|
||||||
:-cl
|
:-cl
|
||||||
jm
|
jm
|
||||||
:-ex
|
:-ex
|
||||||
|
// handle += instruction
|
||||||
::+=
|
::+=
|
||||||
im
|
im
|
||||||
--=?
|
--=?
|
||||||
|
@ -174,6 +219,567 @@ jm
|
||||||
:-rl next line
|
:-rl next line
|
||||||
::+B
|
::+B
|
||||||
+B
|
+B
|
||||||
|
// handle -= instruction
|
||||||
|
::-=
|
||||||
|
im
|
||||||
|
--=?
|
||||||
|
cl
|
||||||
|
// put operand 1 in rbx,
|
||||||
|
im
|
||||||
|
--B1
|
||||||
|
cl
|
||||||
|
// operand 2 in rax
|
||||||
|
im
|
||||||
|
--A2
|
||||||
|
cl
|
||||||
|
// emit 'neg rax'
|
||||||
|
im
|
||||||
|
--nA
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl
|
||||||
|
// emit 'add rax, rbx'
|
||||||
|
im
|
||||||
|
--+B
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl
|
||||||
|
// put rax in operand 1
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::nA
|
||||||
|
nA
|
||||||
|
// deal with bitwise and
|
||||||
|
::&=
|
||||||
|
im
|
||||||
|
--=?
|
||||||
|
cl
|
||||||
|
// put operand 1 in rbx,
|
||||||
|
im
|
||||||
|
--B1
|
||||||
|
cl
|
||||||
|
// operand 2 in rax
|
||||||
|
im
|
||||||
|
--A2
|
||||||
|
cl
|
||||||
|
// emit 'and 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 bitwise or
|
||||||
|
::|=
|
||||||
|
im
|
||||||
|
--=?
|
||||||
|
cl
|
||||||
|
// put operand 1 in rbx,
|
||||||
|
im
|
||||||
|
--B1
|
||||||
|
cl
|
||||||
|
// operand 2 in rax
|
||||||
|
im
|
||||||
|
--A2
|
||||||
|
cl
|
||||||
|
// emit 'or 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
|
||||||
|
::<=
|
||||||
|
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 shl 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
|
||||||
|
// deal with 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 shr 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
|
||||||
|
::<c
|
||||||
|
im
|
||||||
|
--<C
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'shl rax, cl'
|
||||||
|
im
|
||||||
|
--1A put rax back in operand 1
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::<C
|
||||||
|
<C
|
||||||
|
// right shift by cl
|
||||||
|
::>c
|
||||||
|
im
|
||||||
|
-->C
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'shr 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")
|
||||||
|
::x=
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb get char following '='
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
##3a. ascii ':'
|
||||||
|
je
|
||||||
|
:-=: set to label
|
||||||
|
im
|
||||||
|
##31. ascii '1'
|
||||||
|
je
|
||||||
|
:-=1 read 1 byte
|
||||||
|
im
|
||||||
|
##32. ascii '2'
|
||||||
|
je
|
||||||
|
:-=2 read 2 bytes
|
||||||
|
im
|
||||||
|
##34. ascii '4'
|
||||||
|
je
|
||||||
|
:-=4 read 4 bytes
|
||||||
|
im
|
||||||
|
##38. ascii '8'
|
||||||
|
je
|
||||||
|
:-=8 read 8 bytes
|
||||||
|
// it's a number.
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--nu
|
||||||
|
cl
|
||||||
|
BA put number in rbx
|
||||||
|
im
|
||||||
|
--im put immediate in rax
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--1A transfer immediate to output
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
// deal with set to label
|
||||||
|
::=:
|
||||||
|
im
|
||||||
|
##2. add 2 line pointer to get pointer to label name
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--ll
|
||||||
|
cl look up label name
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--im
|
||||||
|
cl put label value in rax
|
||||||
|
im
|
||||||
|
--1A transfer label value to output
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
// deal with load byte
|
||||||
|
::=1
|
||||||
|
im
|
||||||
|
--B2
|
||||||
|
cl put address register in rbx
|
||||||
|
im
|
||||||
|
--A0
|
||||||
|
cl clear rax first.
|
||||||
|
im
|
||||||
|
--lb
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'mov al, byte [rbx]'
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl put rax in output
|
||||||
|
jm
|
||||||
|
:-rl
|
||||||
|
// deal with load word
|
||||||
|
::=2
|
||||||
|
im
|
||||||
|
--B2
|
||||||
|
cl put address register in rbx
|
||||||
|
im
|
||||||
|
--A0
|
||||||
|
cl clear rax first.
|
||||||
|
im
|
||||||
|
--lw
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'mov ax, word [rbx]'
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl put rax in output
|
||||||
|
jm
|
||||||
|
:-rl
|
||||||
|
// deal with load dword
|
||||||
|
::=4
|
||||||
|
im
|
||||||
|
--B2
|
||||||
|
cl put address register in rbx
|
||||||
|
im
|
||||||
|
--A0
|
||||||
|
cl clear rax first.
|
||||||
|
im
|
||||||
|
--ld
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'mov eax, dword [rbx]'
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl put rax in output
|
||||||
|
jm
|
||||||
|
:-rl
|
||||||
|
// deal with load qword
|
||||||
|
::=8
|
||||||
|
im
|
||||||
|
--B2
|
||||||
|
cl put address register in rbx
|
||||||
|
im
|
||||||
|
--A0
|
||||||
|
cl clear rax first.
|
||||||
|
im
|
||||||
|
--lq
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl emit 'mov rax, qword [rbx]'
|
||||||
|
im
|
||||||
|
--1A
|
||||||
|
cl put rax in output
|
||||||
|
jm
|
||||||
|
:-rl
|
||||||
|
// emit 'B = line[1]', i.e. deal with address of store instruction
|
||||||
|
::s@
|
||||||
|
im
|
||||||
|
##1.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb
|
||||||
|
BA
|
||||||
|
jm
|
||||||
|
:-Br
|
||||||
|
// deal with store byte
|
||||||
|
::1=
|
||||||
|
im
|
||||||
|
--s@ put address in rbx
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--A2 put value in rax
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--sb
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr store
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl read next line
|
||||||
|
// deal with store word
|
||||||
|
::2=
|
||||||
|
im
|
||||||
|
--s@ put address in rbx
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--A2 put value in rax
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--sw
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr store
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl read next line
|
||||||
|
// deal with store dword
|
||||||
|
::4=
|
||||||
|
im
|
||||||
|
--s@ put address in rbx
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--A2 put value in rax
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--sd
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##2.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr store
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl read next line
|
||||||
|
// deal with store qword
|
||||||
|
::8=
|
||||||
|
im
|
||||||
|
--s@ put address in rbx
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--A2 put value in rax
|
||||||
|
cl
|
||||||
|
im
|
||||||
|
--sq
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr store
|
||||||
|
cl
|
||||||
|
jm
|
||||||
|
:-rl read next line
|
||||||
|
::lb
|
||||||
|
lb
|
||||||
|
::lw
|
||||||
|
lw
|
||||||
|
::ld
|
||||||
|
ld
|
||||||
|
::lq
|
||||||
|
lq
|
||||||
|
::sb
|
||||||
|
sb
|
||||||
|
::sw
|
||||||
|
sw
|
||||||
|
::sd
|
||||||
|
sd
|
||||||
|
::sq
|
||||||
|
sq
|
||||||
|
// deal with bitwise not
|
||||||
|
::~x
|
||||||
|
im
|
||||||
|
##1.
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb get register
|
||||||
|
RA put in rbp so we can get it back later
|
||||||
|
BR
|
||||||
|
im
|
||||||
|
--Ar
|
||||||
|
cl 'mov rax, <register>'
|
||||||
|
im
|
||||||
|
--!A
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##3.
|
||||||
|
DA
|
||||||
|
im
|
||||||
|
--wr
|
||||||
|
cl 'not rax'
|
||||||
|
BR
|
||||||
|
im
|
||||||
|
--rA
|
||||||
|
cl 'mov <register>, rax'
|
||||||
|
jm
|
||||||
|
:-rl next line
|
||||||
|
::!A
|
||||||
|
!A
|
||||||
|
// emit 'put operand 1 in rax'
|
||||||
|
::A1
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb
|
||||||
|
BA
|
||||||
|
jm
|
||||||
|
:-Ar
|
||||||
// emit 'put operand 1 in rbx'
|
// emit 'put operand 1 in rbx'
|
||||||
::B1
|
::B1
|
||||||
im
|
im
|
||||||
|
@ -198,6 +804,20 @@ lb
|
||||||
BA
|
BA
|
||||||
jm
|
jm
|
||||||
:-Ar
|
:-Ar
|
||||||
|
// emit 'put operand 2 in rbx'
|
||||||
|
::B2
|
||||||
|
im
|
||||||
|
##3. skip e.g. "A+="
|
||||||
|
BA
|
||||||
|
im
|
||||||
|
--LI
|
||||||
|
+B
|
||||||
|
BA
|
||||||
|
zA
|
||||||
|
lb
|
||||||
|
BA
|
||||||
|
jm
|
||||||
|
:-Br
|
||||||
// emit 'put rax in operand 1'
|
// emit 'put rax in operand 1'
|
||||||
::1A
|
::1A
|
||||||
im
|
im
|
||||||
|
@ -226,7 +846,7 @@ jn
|
||||||
:-!i bad instruction
|
:-!i bad instruction
|
||||||
re
|
re
|
||||||
// label definition
|
// label definition
|
||||||
::ld
|
:::l
|
||||||
// first, check if we're on the second pass.
|
// first, check if we're on the second pass.
|
||||||
im
|
im
|
||||||
--2P
|
--2P
|
||||||
|
@ -493,21 +1113,10 @@ BA
|
||||||
im
|
im
|
||||||
--nu
|
--nu
|
||||||
cl
|
cl
|
||||||
// put number in BU
|
|
||||||
BA
|
BA
|
||||||
|
// write byte
|
||||||
im
|
im
|
||||||
--BU
|
--wb
|
||||||
xc
|
|
||||||
sb
|
|
||||||
// write 1 byte from BU
|
|
||||||
im
|
|
||||||
--BU
|
|
||||||
IA
|
|
||||||
im
|
|
||||||
##1.
|
|
||||||
DA
|
|
||||||
im
|
|
||||||
--wr
|
|
||||||
cl
|
cl
|
||||||
jm
|
jm
|
||||||
:-rl next line
|
:-rl next line
|
||||||
|
@ -1048,6 +1657,22 @@ im
|
||||||
##1.
|
##1.
|
||||||
sy
|
sy
|
||||||
re
|
re
|
||||||
|
// write byte in rbx
|
||||||
|
::wb
|
||||||
|
// put number in BU
|
||||||
|
im
|
||||||
|
--BU
|
||||||
|
xc
|
||||||
|
sb
|
||||||
|
// write 1 byte from BU
|
||||||
|
im
|
||||||
|
--BU
|
||||||
|
IA
|
||||||
|
im
|
||||||
|
##1.
|
||||||
|
DA
|
||||||
|
jm
|
||||||
|
:-wr
|
||||||
// return 0
|
// return 0
|
||||||
::r0
|
::r0
|
||||||
zA
|
zA
|
||||||
|
@ -1083,7 +1708,7 @@ im
|
||||||
je
|
je
|
||||||
:-#x hexadecimal
|
:-#x hexadecimal
|
||||||
jm
|
jm
|
||||||
:-bn unrecognized number base
|
:-!n unrecognized number base
|
||||||
// convert newline-terminated decimal representation in rsi to number in rax
|
// convert newline-terminated decimal representation in rsi to number in rax
|
||||||
::#d
|
::#d
|
||||||
zA
|
zA
|
||||||
|
@ -1100,11 +1725,11 @@ je
|
||||||
im
|
im
|
||||||
##30.
|
##30.
|
||||||
jg
|
jg
|
||||||
:-bn bad digit (<'0')
|
:-!n bad digit (<'0')
|
||||||
im
|
im
|
||||||
##39.
|
##39.
|
||||||
jl
|
jl
|
||||||
:-bn bad digit (>'9')
|
:-!n bad digit (>'9')
|
||||||
im
|
im
|
||||||
##ffffffffffffffd0.
|
##ffffffffffffffd0.
|
||||||
+B
|
+B
|
||||||
|
@ -1143,7 +1768,7 @@ je
|
||||||
im
|
im
|
||||||
##30. compare with ascii '0'
|
##30. compare with ascii '0'
|
||||||
jg
|
jg
|
||||||
:-bn bad if < '0'
|
:-!n bad if < '0'
|
||||||
im
|
im
|
||||||
##39.
|
##39.
|
||||||
jl
|
jl
|
||||||
|
@ -1156,11 +1781,11 @@ jm
|
||||||
im
|
im
|
||||||
##61. ASCII 'a'
|
##61. ASCII 'a'
|
||||||
jg
|
jg
|
||||||
:-bn bad digit (not 0-9, and less than 'a')
|
:-!n bad digit (not 0-9, and less than 'a')
|
||||||
im
|
im
|
||||||
##66. ASCII 'f'
|
##66. ASCII 'f'
|
||||||
jl
|
jl
|
||||||
:-bn bad digit (not 0-9, and greater than 'f')
|
:-!n bad digit (not 0-9, and greater than 'f')
|
||||||
im
|
im
|
||||||
##ffffffffffffffa9. -87 (10 - 'a')
|
##ffffffffffffffa9. -87 (10 - 'a')
|
||||||
::hX
|
::hX
|
||||||
|
|
18
03/in03
18
03/in03
|
@ -1,11 +1,20 @@
|
||||||
R+=D
|
D|=C
|
||||||
x3c
|
e
|
||||||
|
D&=C
|
||||||
|
~C
|
||||||
|
B|=A
|
||||||
|
8D=C
|
||||||
|
e
|
||||||
|
A=1B
|
||||||
|
B>=d33
|
||||||
|
e
|
||||||
call :funciton
|
call :funciton
|
||||||
x4b
|
x4b
|
||||||
!:label
|
!:label
|
||||||
?J<B:label
|
?J<B:label
|
||||||
:label
|
:label
|
||||||
e
|
e
|
||||||
|
1B=C
|
||||||
; :l ba b
|
; :l ba b
|
||||||
;J=d0
|
;J=d0
|
||||||
A=d60
|
A=d60
|
||||||
|
@ -22,3 +31,8 @@ B-=J
|
||||||
A=:label
|
A=:label
|
||||||
x3c
|
x3c
|
||||||
return
|
return
|
||||||
|
-*
|
||||||
|
-/
|
||||||
|
+*
|
||||||
|
+/
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue