Test w flag and print with the bytes in comments
This commit is contained in:
parent
f67f6de0b6
commit
86428f0263
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user