Open tomoyuki-nakabayashi opened 6 years ago
7c10: 67 8d 35 16 7d 00 00 addr32 lea si,ds:0x7d16
0x67: address size override prefix
これmodrmがめんどいパターンだな。
Mode: 00, Reg: 110, R/M: 101
r/m関係ないのか? 32bitアドレスの16bitを代入すれば良いだけ?
1: In protected/compatibility mode, this is just disp32, but in long mode this is [RIP]+disp32 (for 64-bit addresses) or [EIP]+disp32
あー、protected/compatibility modeだとPC相対できないから、RIP/EIP + disp32になっているところは、ただのdispなのか。なるほど。
7c17: 66 e8 90 00 00 00 call 7cad <println>
さて、問題児来たね。
operand override prefixつきなので、32-bitで、PC相対ジャンプ。
先に、push/pop作ってしまうか。と思ったが、その前にload/storeか。
7c79: 67 89 1d c3 7d 00 00 addr32 mov WORD PTR ds:0x7dc3,bx
load命令。対応するstoreも作らないと。
$ oobjdump -d -m i386 -Maddr16,data16 -M intel bootloader