Completed the first 8086 simulation homework
This commit is contained in:
@@ -42,6 +42,8 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
u32 offset = 0;
|
||||
|
||||
bool accessed_registers[REGISTER_COUNT] = {false};
|
||||
|
||||
while (offset < size) {
|
||||
instruction decoded;
|
||||
Sim86_Decode8086Instruction(size - offset, buffer + offset, &decoded);
|
||||
@@ -55,13 +57,22 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
if (dest.Type == Operand_Register) {
|
||||
mov_to_register(dest.Register, source);
|
||||
printf("%s: 0x%04x\n", get_register_name(dest.Register),
|
||||
get_register(dest.Register));
|
||||
|
||||
accessed_registers[dest.Register.Index] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < REGISTER_COUNT; ++i) {
|
||||
if (accessed_registers[i]) {
|
||||
register_access reg = {i, 0, 2};
|
||||
u16 value = get_register(reg);
|
||||
|
||||
printf("%s: 0x%04x (%d)\n", get_register_name(reg), value, value);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user