pretty much done 03 compiler!
This commit is contained in:
parent
2507f4b196
commit
c664b4e61b
3 changed files with 145 additions and 9 deletions
8
03/ex03
8
03/ex03
|
@ -31,10 +31,10 @@ B-=J
|
|||
A=:label
|
||||
x3c
|
||||
return
|
||||
;;;;;;;;;;;;;;;;;;;;;;;*-
|
||||
;;;;;;;;;;;;;;;;;;;;;;;/-
|
||||
;;;;;;;;;;;;;;;;;;;;;;;*+
|
||||
;;;;;;;;;;;;;;;;;;;;;;;/+
|
||||
imul
|
||||
idiv
|
||||
mul
|
||||
div
|
||||
:funciton
|
||||
call A
|
||||
str Here is some text which will be put in the executable!
|
||||
|
|
140
03/in02
140
03/in02
|
@ -278,8 +278,64 @@ im
|
|||
##1.
|
||||
je
|
||||
:-al
|
||||
im
|
||||
--U* "mul"
|
||||
IA
|
||||
im
|
||||
--LI
|
||||
JA
|
||||
im
|
||||
--s=
|
||||
cl
|
||||
BA
|
||||
im
|
||||
##1.
|
||||
je
|
||||
:-u*
|
||||
im
|
||||
--S* "imul"
|
||||
IA
|
||||
im
|
||||
--LI
|
||||
JA
|
||||
im
|
||||
--s=
|
||||
cl
|
||||
BA
|
||||
im
|
||||
##1.
|
||||
je
|
||||
:-s*
|
||||
im
|
||||
--U/ "div"
|
||||
IA
|
||||
im
|
||||
--LI
|
||||
JA
|
||||
im
|
||||
--s=
|
||||
cl
|
||||
BA
|
||||
im
|
||||
##1.
|
||||
je
|
||||
:-u/
|
||||
im
|
||||
--S/ "idiv"
|
||||
IA
|
||||
im
|
||||
--LI
|
||||
JA
|
||||
im
|
||||
--s=
|
||||
cl
|
||||
BA
|
||||
im
|
||||
##1.
|
||||
je
|
||||
:-s/
|
||||
jm
|
||||
:-ex
|
||||
:-!i
|
||||
// handle += instruction
|
||||
::+=
|
||||
im
|
||||
|
@ -2165,6 +2221,66 @@ jm
|
|||
:-rl next line
|
||||
::Rt
|
||||
re
|
||||
// deal with "mul"
|
||||
::u*
|
||||
im
|
||||
--+*
|
||||
IA
|
||||
im
|
||||
##3.
|
||||
DA
|
||||
im
|
||||
--wr
|
||||
cl
|
||||
jm
|
||||
:-rl next line
|
||||
// deal with "imul"
|
||||
::s*
|
||||
im
|
||||
---*
|
||||
IA
|
||||
im
|
||||
##3.
|
||||
DA
|
||||
im
|
||||
--wr
|
||||
cl
|
||||
jm
|
||||
:-rl next line
|
||||
// deal with "div"
|
||||
::u/
|
||||
im
|
||||
--+/
|
||||
IA
|
||||
im
|
||||
##3.
|
||||
DA
|
||||
im
|
||||
--wr
|
||||
cl
|
||||
jm
|
||||
:-rl next line
|
||||
// deal with "idiv"
|
||||
::s/
|
||||
im
|
||||
---/
|
||||
IA
|
||||
im
|
||||
##3.
|
||||
DA
|
||||
im
|
||||
--wr
|
||||
cl
|
||||
jm
|
||||
:-rl next line
|
||||
::+*
|
||||
+*
|
||||
::-*
|
||||
-*
|
||||
::+/
|
||||
+/
|
||||
::-/
|
||||
-/
|
||||
// bad instruction
|
||||
::!i
|
||||
im
|
||||
|
@ -2311,6 +2427,28 @@ jm
|
|||
'g
|
||||
'n
|
||||
\n
|
||||
::U* "mul" text
|
||||
'm
|
||||
'u
|
||||
'l
|
||||
\n
|
||||
::S* "imul" text
|
||||
'i
|
||||
'm
|
||||
'u
|
||||
'l
|
||||
\n
|
||||
::U/ "div" text
|
||||
'd
|
||||
'i
|
||||
'v
|
||||
\n
|
||||
::S/ "idiv" text
|
||||
'i
|
||||
'd
|
||||
'i
|
||||
'v
|
||||
\n
|
||||
::IF input file name
|
||||
'i
|
||||
'n
|
||||
|
|
6
03/in03
6
03/in03
|
@ -1,10 +1,8 @@
|
|||
return
|
||||
str Hi
|
||||
align
|
||||
return
|
||||
; write to stdout
|
||||
J=d1
|
||||
I=:hello_world
|
||||
D=:hello_world_end
|
||||
; calculate length by subtracting end from start
|
||||
D-=I
|
||||
syscall d1
|
||||
J=d42
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue