generation
This commit is contained in:
parent
dc71999c7d
commit
d30c4a2e24
5 changed files with 63 additions and 56 deletions
|
|
@ -1,5 +1,5 @@
|
|||
arith START 0
|
||||
LDA x
|
||||
+LDA x
|
||||
ADD y
|
||||
STA sum
|
||||
LDA x
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
***** Section <default> *****
|
||||
Stats: size=78 blocks=78 symbols=9 literals=0 relocations=0
|
||||
Stats: size=79 blocks=79 symbols=9 literals=0 relocations=1
|
||||
Blocks
|
||||
name start size #ins #dir #sto
|
||||
<default> 00000 0004E 19 4 5
|
||||
<default> 00000 0004F 19 4 5
|
||||
Symbols
|
||||
name hex dec scope kind type description
|
||||
HALT 000036 54 local relative code label
|
||||
HALT 000037 55 local relative code label
|
||||
arith 000000 0 exported relative code label
|
||||
diff 000042 66 local relative data label
|
||||
mod 00004B 75 local relative data label
|
||||
prod 000045 69 local relative data label
|
||||
quot 000048 72 local relative data label
|
||||
sum 00003F 63 local relative data label
|
||||
x 000039 57 local relative data label
|
||||
y 00003C 60 local relative data label
|
||||
diff 000043 67 local relative data label
|
||||
mod 00004C 76 local relative data label
|
||||
prod 000046 70 local relative data label
|
||||
quot 000049 73 local relative data label
|
||||
sum 000040 64 local relative data label
|
||||
x 00003A 58 local relative data label
|
||||
y 00003D 61 local relative data label
|
||||
Literals
|
||||
label definition
|
||||
Relocations
|
||||
address length flag symbol
|
||||
00001 5
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
00000 arith START 0
|
||||
00000 032036 LDA x
|
||||
00003 1B2036 ADD y
|
||||
00006 0F2036 STA sum
|
||||
00009 03202D LDA x
|
||||
0000C 1F202D SUB y
|
||||
0000F 0F2030 STA diff
|
||||
00000 0310003A +LDA x
|
||||
00004 1B2036 ADD y
|
||||
00007 0F2036 STA sum
|
||||
0000A 03202D LDA x
|
||||
0000D 1F202D SUB y
|
||||
00010 0F2030 STA diff
|
||||
|
||||
00012 032024 LDA x
|
||||
00015 232024 MUL y
|
||||
00018 0F202A STA prod
|
||||
00013 032024 LDA x
|
||||
00016 232024 MUL y
|
||||
00019 0F202A STA prod
|
||||
|
||||
0001B 03201B LDA x
|
||||
0001E 27201B DIV y
|
||||
00021 0F2024 STA quot
|
||||
0001C 03201B LDA x
|
||||
0001F 27201B DIV y
|
||||
00022 0F2024 STA quot
|
||||
|
||||
00024 032015 LDA y
|
||||
00027 23201E MUL quot
|
||||
0002A 0F201E STA mod
|
||||
0002D 032009 LDA x
|
||||
00030 1F2018 SUB mod
|
||||
00033 0F2015 STA mod
|
||||
00036 3F2FFD HALT J HALT
|
||||
00039 END arith
|
||||
00025 032015 LDA y
|
||||
00028 23201E MUL quot
|
||||
0002B 0F201E STA mod
|
||||
0002E 032009 LDA x
|
||||
00031 1F2018 SUB mod
|
||||
00034 0F2015 STA mod
|
||||
00037 3F2FFD HALT J HALT
|
||||
0003A END arith
|
||||
|
||||
00039 00000B x WORD 11
|
||||
0003C 000005 y WORD 5
|
||||
0003F 000000 sum RESW 1
|
||||
00042 000000 diff RESW 1
|
||||
00045 000000 prod RESW 1
|
||||
00048 000000 quot RESW 1
|
||||
0004B 000000 mod RESW 1
|
||||
0003A 00000B x WORD 11
|
||||
0003D 000005 y WORD 5
|
||||
00040 000000 sum RESW 1
|
||||
00043 000000 diff RESW 1
|
||||
00046 000000 prod RESW 1
|
||||
00049 000000 quot RESW 1
|
||||
0004C 000000 mod RESW 1
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
Harith 00000000004E
|
||||
T0000001E0320361B20360F203603202D1F202D0F20300320242320240F202A03201B
|
||||
T00001E1E27201B0F202403201523201E0F201E0320091F20180F20153F2FFD00000B
|
||||
T00003C03000005
|
||||
Harith 00000000004F
|
||||
T0000001E0310003A1B20360F203603202D1F202D0F20300320242320240F202A0320
|
||||
T00001E1E1B27201B0F202403201523201E0F201E0320091F20180F20153F2FFD0000
|
||||
T00003C040B000005
|
||||
M00000105
|
||||
E000000
|
||||
|
|
|
|||
|
|
@ -80,6 +80,8 @@ var bazno_dovoljeno bool
|
|||
|
||||
var bazno_naslov int
|
||||
|
||||
var naslov_programa int
|
||||
|
||||
var zacetni_naslov int
|
||||
|
||||
type ukaz interface {
|
||||
|
|
@ -607,6 +609,7 @@ func check_M_i(el string, AST *[]ukaz) bool {
|
|||
|
||||
func prvi_prehod(AST *[]ukaz) {
|
||||
lc_global, _ = strconv.Atoi((*AST)[0].(*format_D_n).operand)
|
||||
naslov_programa = lc_global
|
||||
ime_programa = (*AST)[0].(*format_D_n).oznaka
|
||||
for _, el := range *AST {
|
||||
//fmt.Printf("lc_global '%x'\n", lc_global)
|
||||
|
|
@ -730,21 +733,9 @@ func drugi_prehod(AST *[]ukaz) {
|
|||
}
|
||||
}
|
||||
case *format_F4_m: if st, err := strconv.Atoi(val.naslov); err == nil {
|
||||
if val.n && !val.i {
|
||||
|
||||
} else if !val.n && val.i {
|
||||
|
||||
} else if val.n && val.i {
|
||||
|
||||
}
|
||||
val.odmik = st
|
||||
} else {
|
||||
if val.n && !val.i {
|
||||
|
||||
} else if !val.n && val.i {
|
||||
|
||||
} else if val.n && val.i {
|
||||
|
||||
}
|
||||
val.odmik = simbolna_tabela[val.naslov]
|
||||
}
|
||||
case *format_D: bazno_dovoljeno = false
|
||||
case *format_D_n: switch val.ime {
|
||||
|
|
@ -769,6 +760,19 @@ func drugi_prehod(AST *[]ukaz) {
|
|||
}
|
||||
}
|
||||
|
||||
func generacija(AST *[]ukaz) {
|
||||
_, err := os.Create("out.obj")
|
||||
if err != nil {
|
||||
fmt.Println("Error creating a file: ", err)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
switch
|
||||
fmt.Println("H", ime_programa, naslov_programa, naslov_programa - lc_global + (*AST)[len(*AST) - 1].velikost)
|
||||
|
||||
}
|
||||
|
||||
|
||||
func izpis(AST *[]ukaz) {
|
||||
for _, el := range *AST {
|
||||
switch val := el.(type) {
|
||||
|
|
@ -847,4 +851,5 @@ func main() {
|
|||
}*/
|
||||
drugi_prehod(&AST)
|
||||
//izpis(&AST)
|
||||
generacija(&AST)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue