Test w flag and print with the bytes in comments

This commit is contained in:
Joseph Ferano 2025-01-21 14:50:30 +07:00
parent f67f6de0b6
commit 86428f0263

View File

@ -29,7 +29,7 @@ registers := [8]Register {
main :: proc() { main :: proc() {
ax := registers[0] ax := registers[0]
ax.value.full = 52428 ax.value.full = 52428
f,err := os.open("./asm_files/01-01-38.bin") f,err := os.open(len(os.args) > 1 ? os.args[1] : "./asm_files/01-01-38.bin")
if err != os.ERROR_NONE { if err != os.ERROR_NONE {
os.exit(1) os.exit(1)
} }
@ -45,18 +45,28 @@ main :: proc() {
// mov dx, bx // mov dx, bx
read_next := false read_next := false
src_dst := true
is_word := false
prev :u8 = 0
fmt.println("bits 16\n")
for b in data { for b in data {
if read_next { if read_next {
mod := (b & 0b11000000) >> 6 mod := (b & 0b11000000) >> 6
reg := (b & 0b00111000) >> 3 reg := (b & 0b00111000) >> 3
rm := b & 0b00000111 rm := b & 0b00000111
fmt.printfln("mov %s, %s", registers[rm].fullname, registers[reg].fullname) src_name := is_word ? registers[reg].fullname : registers[reg].bytename
dst_name := is_word ? registers[rm].fullname : registers[rm].bytename
fmt.printfln("mov %s, %s ;; %b %b", dst_name, src_name, prev, b)
read_next = false read_next = false
continue continue
} }
if b == 0b10001001 { if b == 0b10001001 {
read_next = true read_next = true
continue is_word = true
} } else if b == 0b10001000 {
read_next = true
is_word = false
}
prev = b
} }
} }