汇编解码为机器码(Y86)时如何确定程序计数器?
How to determine the program counter when decoding from assembly to machine code (Y86)?
我无法理解从汇编解码为 Y86 时如何确定地址位置。在示例中,
0x030
0x030: 6300 # xorq %rax , %rax
0x032: 50030001000000000000 # mrmovq 0x100(%rax ) , %rbx
0x03c: 50010002000000000000 # mrmovq 0x200(%rax ) , %rcx
地址位置如何从0x030到0x032到0x03c?确定位置增加多少的公式是什么?
6300
中有多少字节?答案:2 和 0x030 + 2 = 0x032
。
50030001000000000000
中有多少个字节?答案:10 和 0x032 + 10 = 0x03c
.
所以你只需要统计机器码中的字节数,然后加上前一个地址就可以得到下一个地址。
我无法理解从汇编解码为 Y86 时如何确定地址位置。在示例中,
0x030
0x030: 6300 # xorq %rax , %rax
0x032: 50030001000000000000 # mrmovq 0x100(%rax ) , %rbx
0x03c: 50010002000000000000 # mrmovq 0x200(%rax ) , %rcx
地址位置如何从0x030到0x032到0x03c?确定位置增加多少的公式是什么?
6300
中有多少字节?答案:2 和 0x030 + 2 = 0x032
。
50030001000000000000
中有多少个字节?答案:10 和 0x032 + 10 = 0x03c
.
所以你只需要统计机器码中的字节数,然后加上前一个地址就可以得到下一个地址。