drugi prehod 2.0
This commit is contained in:
parent
504df9b8fd
commit
dc71999c7d
12 changed files with 281 additions and 51 deletions
7
ass3/zbirnik/parsing/exp.asm
Normal file
7
ass3/zbirnik/parsing/exp.asm
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
mojprg START 0
|
||||||
|
LDA @LAB
|
||||||
|
LDA LAB
|
||||||
|
LDA #12
|
||||||
|
END mojprg
|
||||||
|
halt J halt
|
||||||
|
LAB WORD 2
|
||||||
14
ass3/zbirnik/parsing/exp.log
Normal file
14
ass3/zbirnik/parsing/exp.log
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
***** Section <default> *****
|
||||||
|
Stats: size=15 blocks=15 symbols=3 literals=0 relocations=0
|
||||||
|
Blocks
|
||||||
|
name start size #ins #dir #sto
|
||||||
|
<default> 00000 0000F 4 3 0
|
||||||
|
Symbols
|
||||||
|
name hex dec scope kind type description
|
||||||
|
LAB 00000C 12 local relative data label
|
||||||
|
halt 000009 9 local relative code label
|
||||||
|
mojprg 000000 0 exported relative code label
|
||||||
|
Literals
|
||||||
|
label definition
|
||||||
|
Relocations
|
||||||
|
address length flag symbol
|
||||||
7
ass3/zbirnik/parsing/exp.lst
Normal file
7
ass3/zbirnik/parsing/exp.lst
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
00000 mojprg START 0
|
||||||
|
00000 022009 LDA @LAB
|
||||||
|
00003 032006 LDA LAB
|
||||||
|
00006 01000C LDA #12
|
||||||
|
00009 END mojprg
|
||||||
|
00009 3F2FFD halt J halt
|
||||||
|
0000C 000002 LAB WORD 2
|
||||||
3
ass3/zbirnik/parsing/exp.obj
Normal file
3
ass3/zbirnik/parsing/exp.obj
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Hmojprg00000000000F
|
||||||
|
T0000000F02200903200601000C3F2FFD000002
|
||||||
|
E000000
|
||||||
20
ass3/zbirnik/parsing/input.log
Normal file
20
ass3/zbirnik/parsing/input.log
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
***** Section <default> *****
|
||||||
|
Stats: size=78 blocks=78 symbols=9 literals=0 relocations=0
|
||||||
|
Blocks
|
||||||
|
name start size #ins #dir #sto
|
||||||
|
<default> 00000 0004E 19 4 5
|
||||||
|
Symbols
|
||||||
|
name hex dec scope kind type description
|
||||||
|
HALT 000036 54 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
|
||||||
|
Literals
|
||||||
|
label definition
|
||||||
|
Relocations
|
||||||
|
address length flag symbol
|
||||||
32
ass3/zbirnik/parsing/input.lst
Normal file
32
ass3/zbirnik/parsing/input.lst
Normal file
|
|
@ -0,0 +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
|
||||||
|
|
||||||
|
00012 032024 LDA x
|
||||||
|
00015 232024 MUL y
|
||||||
|
00018 0F202A STA prod
|
||||||
|
|
||||||
|
0001B 03201B LDA x
|
||||||
|
0001E 27201B DIV y
|
||||||
|
00021 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
|
||||||
|
|
||||||
|
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
|
||||||
5
ass3/zbirnik/parsing/input.obj
Normal file
5
ass3/zbirnik/parsing/input.obj
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
Harith 00000000004E
|
||||||
|
T0000001E0320361B20360F203603202D1F202D0F20300320242320240F202A03201B
|
||||||
|
T00001E1E27201B0F202403201523201E0F201E0320091F20180F20153F2FFD00000B
|
||||||
|
T00003C03000005
|
||||||
|
E000000
|
||||||
|
|
@ -76,6 +76,12 @@ var ime_programa string
|
||||||
|
|
||||||
var lc_global int
|
var lc_global int
|
||||||
|
|
||||||
|
var bazno_dovoljeno bool
|
||||||
|
|
||||||
|
var bazno_naslov int
|
||||||
|
|
||||||
|
var zacetni_naslov int
|
||||||
|
|
||||||
type ukaz interface {
|
type ukaz interface {
|
||||||
GetOznaka() string
|
GetOznaka() string
|
||||||
}
|
}
|
||||||
|
|
@ -146,6 +152,7 @@ type format_F3_m struct {
|
||||||
format int // 3
|
format int // 3
|
||||||
velikost int
|
velikost int
|
||||||
naslov string
|
naslov string
|
||||||
|
odmik int
|
||||||
x bool
|
x bool
|
||||||
b bool
|
b bool
|
||||||
p bool
|
p bool
|
||||||
|
|
@ -161,6 +168,7 @@ type format_F4_m struct {
|
||||||
format int // 4
|
format int // 4
|
||||||
velikost int
|
velikost int
|
||||||
naslov string
|
naslov string
|
||||||
|
odmik int
|
||||||
x bool
|
x bool
|
||||||
b bool
|
b bool
|
||||||
p bool
|
p bool
|
||||||
|
|
@ -203,7 +211,6 @@ type format_M_i struct {
|
||||||
format int // 9
|
format int // 9
|
||||||
velikost int
|
velikost int
|
||||||
operand string
|
operand string
|
||||||
rezervacija int
|
|
||||||
lc int
|
lc int
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -382,7 +389,7 @@ func check_F2_rr(el string, AST *[]ukaz) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func check_F3_m(el string, AST *[]ukaz) bool {
|
func check_F3_m(el string, AST *[]ukaz) bool {
|
||||||
match_F3_m, err := regexp.MatchString(`(?m)^[A-Za-z_]*[\t ]+[A-Za-z]+ ([A-Za-z]+|(#?|@?)[0-9+]+)(, X)?[\t ]*(\..*)?$\n`, el)
|
match_F3_m, err := regexp.MatchString(`(?m)^[A-Za-z_]*[\t ]+[A-Za-z]+ ((#?|@?)[A-Za-z]+|(#?|@?)[0-9+]+)(, X)?[\t ]*(\..*)?$\n`, el)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error while matching string.")
|
fmt.Println("Error while matching string.")
|
||||||
}
|
}
|
||||||
|
|
@ -404,7 +411,7 @@ func check_F3_m(el string, AST *[]ukaz) bool {
|
||||||
}
|
}
|
||||||
nov_ukaz.opcode = val
|
nov_ukaz.opcode = val
|
||||||
// naslov
|
// naslov
|
||||||
re_par1 := regexp.MustCompile(`[\t ]+[A-Za-z]+ ([A-Za-z]+|(#?|@?)[0-9+]+)`)
|
re_par1 := regexp.MustCompile(`[\t ]+[A-Za-z]+ ((#?|@?)[A-Za-z]+|(#?|@?)[0-9+]+)`)
|
||||||
nov_ukaz.naslov = strings.Split(strings.Trim(re_par1.FindString(el), "\t \n"), " ")[1]
|
nov_ukaz.naslov = strings.Split(strings.Trim(re_par1.FindString(el), "\t \n"), " ")[1]
|
||||||
if nov_ukaz.naslov[0] == '@' {
|
if nov_ukaz.naslov[0] == '@' {
|
||||||
nov_ukaz.n = true
|
nov_ukaz.n = true
|
||||||
|
|
@ -416,8 +423,8 @@ func check_F3_m(el string, AST *[]ukaz) bool {
|
||||||
nov_ukaz.naslov = nov_ukaz.naslov[1:len(nov_ukaz.naslov)]
|
nov_ukaz.naslov = nov_ukaz.naslov[1:len(nov_ukaz.naslov)]
|
||||||
} else {
|
} else {
|
||||||
//temp
|
//temp
|
||||||
nov_ukaz.n = false
|
nov_ukaz.n = true
|
||||||
nov_ukaz.i = false
|
nov_ukaz.i = true
|
||||||
}
|
}
|
||||||
// indeksno naslavljanje
|
// indeksno naslavljanje
|
||||||
re_x := regexp.MustCompile(`(, X)[\t ]*(\..*)?\n`)
|
re_x := regexp.MustCompile(`(, X)[\t ]*(\..*)?\n`)
|
||||||
|
|
@ -435,7 +442,7 @@ func check_F3_m(el string, AST *[]ukaz) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func check_F4_m(el string, AST *[]ukaz) bool {
|
func check_F4_m(el string, AST *[]ukaz) bool {
|
||||||
match_F4_m, err := regexp.MatchString(`(?m)^[A-Za-z_]*[\t ]+\+[A-Za-z]+ ([A-Za-z]+|(#?|@?)[0-9+]+)(, X)?[\t ]*(\..*)?$\n`, el)
|
match_F4_m, err := regexp.MatchString(`(?m)^[A-Za-z_]*[\t ]+\+[A-Za-z]+ ((#?|@?)[A-Za-z]+|(#?|@?)[0-9+]+)(, X)?[\t ]*(\..*)?$\n`, el)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Error while matching string.")
|
fmt.Println("Error while matching string.")
|
||||||
}
|
}
|
||||||
|
|
@ -458,7 +465,7 @@ func check_F4_m(el string, AST *[]ukaz) bool {
|
||||||
}
|
}
|
||||||
nov_ukaz.opcode = val
|
nov_ukaz.opcode = val
|
||||||
// naslov
|
// naslov
|
||||||
re_par1 := regexp.MustCompile(`[\t ]+\+[A-Za-z]+ ([A-Za-z]+|(#?|@?)[0-9+]+)`)
|
re_par1 := regexp.MustCompile(`[\t ]+\+[A-Za-z]+ ((#?|@?)[A-Za-z]+|(#?|@?)[0-9+]+)`)
|
||||||
nov_ukaz.naslov = strings.Split(strings.Trim(re_par1.FindString(el), "\t \n"), " ")[1]
|
nov_ukaz.naslov = strings.Split(strings.Trim(re_par1.FindString(el), "\t \n"), " ")[1]
|
||||||
if nov_ukaz.naslov[0] == '@' {
|
if nov_ukaz.naslov[0] == '@' {
|
||||||
nov_ukaz.n = true
|
nov_ukaz.n = true
|
||||||
|
|
@ -469,8 +476,8 @@ func check_F4_m(el string, AST *[]ukaz) bool {
|
||||||
nov_ukaz.i = true
|
nov_ukaz.i = true
|
||||||
nov_ukaz.naslov = nov_ukaz.naslov[1:len(nov_ukaz.naslov)]
|
nov_ukaz.naslov = nov_ukaz.naslov[1:len(nov_ukaz.naslov)]
|
||||||
} else {
|
} else {
|
||||||
nov_ukaz.n = false
|
nov_ukaz.n = true
|
||||||
nov_ukaz.i = false
|
nov_ukaz.i = true
|
||||||
}
|
}
|
||||||
// indeksno naslavljanje
|
// indeksno naslavljanje
|
||||||
re_x := regexp.MustCompile(`(, X)[\t ]*(\..*)?\n`)
|
re_x := regexp.MustCompile(`(, X)[\t ]*(\..*)?\n`)
|
||||||
|
|
@ -586,13 +593,10 @@ func check_M_i(el string, AST *[]ukaz) bool {
|
||||||
}
|
}
|
||||||
re_ope := regexp.MustCompile(`[0-9]+`)
|
re_ope := regexp.MustCompile(`[0-9]+`)
|
||||||
nova_direktiva.operand = re_ope.FindString(el)
|
nova_direktiva.operand = re_ope.FindString(el)
|
||||||
operand_int, _ := strconv.Atoi(nova_direktiva.operand)
|
|
||||||
if nova_direktiva.ime == "WORD" {
|
if nova_direktiva.ime == "WORD" {
|
||||||
nova_direktiva.velikost = 3
|
nova_direktiva.velikost = 3
|
||||||
nova_direktiva.rezervacija = 3 * operand_int
|
|
||||||
} else {
|
} else {
|
||||||
nova_direktiva.velikost = 1
|
nova_direktiva.velikost = 1
|
||||||
nova_direktiva.rezervacija = operand_int
|
|
||||||
}
|
}
|
||||||
//fmt.Println(el, nova_direktiva)
|
//fmt.Println(el, nova_direktiva)
|
||||||
*AST = append(*AST, &nova_direktiva)
|
*AST = append(*AST, &nova_direktiva)
|
||||||
|
|
@ -605,28 +609,162 @@ func prvi_prehod(AST *[]ukaz) {
|
||||||
lc_global, _ = strconv.Atoi((*AST)[0].(*format_D_n).operand)
|
lc_global, _ = strconv.Atoi((*AST)[0].(*format_D_n).operand)
|
||||||
ime_programa = (*AST)[0].(*format_D_n).oznaka
|
ime_programa = (*AST)[0].(*format_D_n).oznaka
|
||||||
for _, el := range *AST {
|
for _, el := range *AST {
|
||||||
fmt.Println("lc_global", lc_global)
|
//fmt.Printf("lc_global '%x'\n", lc_global)
|
||||||
switch val := el.(type) {
|
switch val := el.(type) {
|
||||||
case *format_F1: val.lc = lc_global
|
case *format_F1: val.lc = lc_global
|
||||||
lc_global += 1
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
case *format_F2_n: val.lc = lc_global
|
case *format_F2_n: val.lc = lc_global
|
||||||
lc_global += 2
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
case *format_F2_r: val.lc = lc_global
|
case *format_F2_r: val.lc = lc_global
|
||||||
lc_global += 2
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
case *format_F2_rn: val.lc = lc_global
|
case *format_F2_rn: val.lc = lc_global
|
||||||
lc_global += 2
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
case *format_F2_rr: val.lc = lc_global
|
case *format_F2_rr: val.lc = lc_global
|
||||||
lc_global += 2
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
case *format_F3_m: val.lc = lc_global
|
case *format_F3_m: val.lc = lc_global
|
||||||
lc_global += 3
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
|
if bazno_dovoljeno {
|
||||||
|
val.b = true
|
||||||
|
}
|
||||||
case *format_F4_m: val.lc = lc_global
|
case *format_F4_m: val.lc = lc_global
|
||||||
lc_global += 4
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
|
if bazno_dovoljeno {
|
||||||
|
val.b = true
|
||||||
|
}
|
||||||
case *format_D: val.lc = lc_global
|
case *format_D: val.lc = lc_global
|
||||||
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
bazno_dovoljeno = false
|
||||||
case *format_D_n: val.lc = lc_global
|
case *format_D_n: val.lc = lc_global
|
||||||
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
switch val.ime {
|
||||||
|
case "ORG": inc, _ := strconv.Atoi(val.operand)
|
||||||
|
lc_global += inc
|
||||||
|
case "BASE": bazno_dovoljeno = true
|
||||||
|
}
|
||||||
case *format_M_r: val.lc = lc_global
|
case *format_M_r: val.lc = lc_global
|
||||||
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
lc_global += val.rezervacija
|
lc_global += val.rezervacija
|
||||||
case *format_M_i: val.lc = lc_global
|
case *format_M_i: val.lc = lc_global
|
||||||
lc_global += val.rezervacija
|
if val.oznaka != "" {
|
||||||
|
simbolna_tabela[val.oznaka] = lc_global
|
||||||
|
}
|
||||||
|
lc_global += val.velikost
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func drugi_prehod(AST *[]ukaz) {
|
||||||
|
for _, el := range *AST {
|
||||||
|
switch val := el.(type) {
|
||||||
|
case *format_F3_m: if st, err := strconv.Atoi(val.naslov); err == nil {
|
||||||
|
if val.n && !val.i {
|
||||||
|
if st >= -2048 && st <= 2047 {
|
||||||
|
val.odmik = st - (val.lc + val.velikost) //naslov - PC
|
||||||
|
} else if bazno_dovoljeno && st >= 0 && st <= 4095 {
|
||||||
|
val.odmik = st - bazno_naslov
|
||||||
|
} else {
|
||||||
|
val.odmik = st
|
||||||
|
}
|
||||||
|
} else if !val.n && val.i {
|
||||||
|
val.odmik = st
|
||||||
|
} else if val.n && val.i {
|
||||||
|
if st >= -2048 && st <= 2047 {
|
||||||
|
val.odmik = st - (val.lc + val.velikost) //naslov - PC
|
||||||
|
} else if bazno_dovoljeno && st >= 0 && st <= 4095 {
|
||||||
|
val.odmik = st - bazno_naslov
|
||||||
|
} else {
|
||||||
|
val.odmik = st
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
naslov := simbolna_tabela[val.naslov]
|
||||||
|
if val.n && !val.i {
|
||||||
|
if naslov >= -2048 && naslov <= 2047 {
|
||||||
|
val.odmik = naslov - (val.lc + val.velikost) //naslov - PC
|
||||||
|
} else if bazno_dovoljeno && naslov >= 0 && naslov <= 4095 {
|
||||||
|
val.odmik = naslov - bazno_naslov
|
||||||
|
} else {
|
||||||
|
val.odmik = naslov
|
||||||
|
}
|
||||||
|
} else if !val.n && val.i {
|
||||||
|
val.odmik = naslov
|
||||||
|
} else if val.n && val.i {
|
||||||
|
if naslov >= -2048 && naslov <= 2047 {
|
||||||
|
val.odmik = naslov - (val.lc + val.velikost) //naslov - PC
|
||||||
|
//fmt.Printf("pc %x\n", val.odmik)
|
||||||
|
} else if bazno_dovoljeno && naslov >= 0 && naslov <= 4095 {
|
||||||
|
val.odmik = naslov - bazno_naslov
|
||||||
|
//fmt.Printf("bazno %x\n", val.odmik)
|
||||||
|
} else {
|
||||||
|
val.odmik = naslov
|
||||||
|
//fmt.Printf("neposredno %x\n", val.odmik)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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 {
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if val.n && !val.i {
|
||||||
|
|
||||||
|
} else if !val.n && val.i {
|
||||||
|
|
||||||
|
} else if val.n && val.i {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case *format_D: bazno_dovoljeno = false
|
||||||
|
case *format_D_n: switch val.ime {
|
||||||
|
case "BASE": bazno_dovoljeno = true
|
||||||
|
if st, err := strconv.Atoi(val.operand); err == nil {
|
||||||
|
bazno_naslov = st
|
||||||
|
} else {
|
||||||
|
bazno_naslov = simbolna_tabela[val.operand]
|
||||||
|
}
|
||||||
|
case "END": if st, err := strconv.Atoi(val.operand); err == nil {
|
||||||
|
zacetni_naslov = st
|
||||||
|
} else {
|
||||||
|
zacetni_naslov = simbolna_tabela[val.operand]
|
||||||
|
}
|
||||||
|
case "EQU": if st, err := strconv.Atoi(val.operand); err == nil {
|
||||||
|
simbolna_tabela[val.oznaka] = st
|
||||||
|
} else {
|
||||||
|
simbolna_tabela[val.oznaka] = simbolna_tabela[val.operand]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -703,6 +841,10 @@ func main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
prvi_prehod(&AST)
|
prvi_prehod(&AST)
|
||||||
izpis(&AST)
|
//izpis(&AST)
|
||||||
//drugi_prehod()
|
/*for k, v := range simbolna_tabela {
|
||||||
|
fmt.Printf("k: %s v: %x\n", k, v)
|
||||||
|
}*/
|
||||||
|
drugi_prehod(&AST)
|
||||||
|
//izpis(&AST)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
PRG START 300
|
PRG START 0
|
||||||
LDA #bytes_len
|
LDA #bytes_len
|
||||||
DIV #3
|
DIV #3
|
||||||
LDA bytes_len
|
LDA bytes_len
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,16 @@
|
||||||
Stats: size=29 blocks=29 symbols=7 literals=0 relocations=0
|
Stats: size=29 blocks=29 symbols=7 literals=0 relocations=0
|
||||||
Blocks
|
Blocks
|
||||||
name start size #ins #dir #sto
|
name start size #ins #dir #sto
|
||||||
<default> 0012C 0001D 5 10 1
|
<default> 00000 0001D 5 10 1
|
||||||
Symbols
|
Symbols
|
||||||
name hex dec scope kind type description
|
name hex dec scope kind type description
|
||||||
HALT 000138 312 local relative code label
|
HALT 00000C 12 local relative code label
|
||||||
PRG 00012C 300 exported relative code label
|
PRG 000000 0 exported relative code label
|
||||||
bytes_len 000009 9 local absolute notlabel test-tab
|
bytes_len 000009 9 local absolute notlabel test-tab
|
||||||
tab 00013D 317 local relative data label
|
tab 000011 17 local relative data label
|
||||||
tab0 00013B 315 local relative data label
|
tab0 00000F 15 local relative data label
|
||||||
tab2 000146 326 local relative data label
|
tab2 00001A 26 local relative data label
|
||||||
test 000146 326 local absolute notlabel *
|
test 00001A 26 local absolute notlabel *
|
||||||
Literals
|
Literals
|
||||||
label definition
|
label definition
|
||||||
Relocations
|
Relocations
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
0012C PRG START 300
|
00000 PRG START 0
|
||||||
0012C 010009 LDA #bytes_len
|
00000 010009 LDA #bytes_len
|
||||||
0012F 250003 DIV #3
|
00003 250003 DIV #3
|
||||||
00132 030009 LDA bytes_len
|
00006 030009 LDA bytes_len
|
||||||
00135 6B2005 LDB tab
|
00009 6B2005 LDB tab
|
||||||
00135 BASE tab
|
00009 BASE tab
|
||||||
00135 NOBASE
|
00009 NOBASE
|
||||||
00138 3F2FFD HALT J HALT
|
0000C 3F2FFD HALT J HALT
|
||||||
0013B END PRG
|
0000F END PRG
|
||||||
|
|
||||||
0013B 0000 tab0 RESB 2
|
0000F 0000 tab0 RESB 2
|
||||||
0013D 000001 tab WORD 1
|
00011 000001 tab WORD 1
|
||||||
00140 000002 WORD 2
|
00014 000002 WORD 2
|
||||||
00143 000003 WORD 3
|
00017 000003 WORD 3
|
||||||
00146 test EQU *
|
0001A test EQU *
|
||||||
00146 bytes_len EQU test-tab
|
0001A bytes_len EQU test-tab
|
||||||
00146 000001 tab2 WORD 1
|
0001A 000001 tab2 WORD 1
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
HPRG00012C00001D
|
HPRG 00000000001D
|
||||||
T00012C0F0100092500030300096B20053F2FFD
|
T0000000F0100092500030300096B20053F2FFD
|
||||||
T00013D0C000001000002000003000001
|
T0000110C000001000002000003000001
|
||||||
E00012C
|
E000000
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue