pretty much done 03 compiler!

This commit is contained in:
pommicket 2021-11-13 14:32:00 -05:00
parent 2507f4b196
commit c664b4e61b
3 changed files with 145 additions and 9 deletions

View file

@ -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
View file

@ -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

View file

@ -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