assembler almost finished

This commit is contained in:
aljazbrodar. 2026-01-17 19:12:24 +01:00
parent 01188ab9a8
commit 1f29ed7d14
6 changed files with 37 additions and 24 deletions

View file

@ -1,10 +1,7 @@
mojprg START 0
CLEAR B
LDA @LAB
LDB LAB
LDA #12
LDA TAB3
END mojprg
halt J halt
LAB WORD 2
LAB2 RESW 3
LAB3 WORD 3
TAB RESB 31000
TAB3 BYTE 1

View file

@ -1,14 +1,14 @@
***** Section <default> *****
Stats: size=29 blocks=29 symbols=5 literals=0 relocations=0
Stats: size=31010 blocks=31010 symbols=5 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 0001D 5 4 1
<default> 00000 07922 2 4 1
Symbols
name hex dec scope kind type description
LAB 00000E 14 local relative data label
LAB2 000011 17 local relative data label
LAB3 00001A 26 local relative data label
halt 00000B 11 local relative code label
LAB 000006 6 local relative data label
TAB 000009 9 local relative data label
TAB3 007921 31009 local relative data label
halt 000003 3 local relative code label
mojprg 000000 0 exported relative code label
Literals
label definition

View file

@ -1,10 +1,7 @@
00000 mojprg START 0
00000 B430 CLEAR B
00002 022009 LDA @LAB
00005 6B2006 LDB LAB
00008 01000C LDA #12
0000B END mojprg
0000B 3F2FFD halt J halt
0000E 000002 LAB WORD 2
00011 00....00 LAB2 RESW 3
0001A 000003 LAB3 WORD 3
00000 007921 LDA TAB3
00003 END mojprg
00003 3F2FFD halt J halt
00006 000002 LAB WORD 2
00009 00....00 TAB RESB 31000
07921 01 TAB3 BYTE 1

View file

@ -1,4 +1,4 @@
Hmojprg00000000001D
T00000011B4300220096B200601000C3F2FFD000002
T00001A03000003
Hmojprg000000007922
T000000090079213F2FFD000002
T0079210101
E000000

View file

@ -0,0 +1,6 @@
Harith 00000000004F
T0000001c0310003a1b20360f203603202d1f202d0f20300320242320240f202a
T00001c1e03201b27201b0f202403201523201e0f201e0320091f20180f20153f2ffd
T00003a0600000b000005
M00000105
E000000

View file

@ -94,6 +94,13 @@ var naslov_programa int
var zacetni_naslov int
type M_zapis struct {
odmik int
dolzina int
}
var M_tabela []M_zapis
type ukaz interface {
Velikost() int
GetAddr() int
@ -767,6 +774,8 @@ func drugi_prehod(AST *[]ukaz) {
val.odmik = st
} else {
val.odmik = simbolna_tabela[val.naslov]
m := M_zapis{val.lc + 1, 5}
M_tabela = append(M_tabela, m)
}
case *format_D: bazno_dovoljeno = false
case *format_D_n: switch val.ime {
@ -881,6 +890,10 @@ func generacija(AST *[]ukaz) {
}
}
fmt.Printf("T: %x, %x, %s\n", line_addr, line_len, line)
for _, el := range M_tabela {
fmt.Printf("M: %06x, %02x \n", el.odmik, el.dolzina)
}
fmt.Printf("END %06x", zacetni_naslov)
}
func izpis(AST *[]ukaz) {