We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
In the push/pop instructions, the value of ss is multiplied by 0x10 before passing to Address::calculate_from_offset:
ss
0x10
Address::calculate_from_offset
8086-Emulator/src/lib/interpreter/interpreter.lalrpop
Lines 248 to 250 in 7d0fd42
But the latter multiplies by 0x10 again:
8086-Emulator/src/lib/util/address.rs
Line 27 in 7d0fd42
So ss effectively gets shifted 8 bits instead of 4.
You can reproduce with
mov ax, 0x1000 mov ss, ax mov sp, 0x20 mov bx, 0xdead push bx
and note that address 0x0001e gets written instead of 0x1001e as it should.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
In the push/pop instructions, the value of
ss
is multiplied by0x10
before passing toAddress::calculate_from_offset
:8086-Emulator/src/lib/interpreter/interpreter.lalrpop
Lines 248 to 250 in 7d0fd42
But the latter multiplies by 0x10 again:
8086-Emulator/src/lib/util/address.rs
Line 27 in 7d0fd42
So
ss
effectively gets shifted 8 bits instead of 4.You can reproduce with
and note that address 0x0001e gets written instead of 0x1001e as it should.
The text was updated successfully, but these errors were encountered: