PowerPC 反汇编器输出与操作码不同

PowerPC disassembler output different from opcodes

为什么 powerpc 的操作码与反汇编器输出的不同?

Diassambler Output

Disassembly of section .text:

00000000100000b0 <main>:
    100000b0:   38 22 ff f8      addi   r1,r2,-8
    100000b4:   48 00 00 09      bl     100000bc <_main>
    100000b8:   48 00 00 58      b      10000110 <exit>

例如,对于指令,"b"前6位包含十六进制值48。但是,在操作码table上,它说操作码是18。这是为什么?我是否错误地解释了操作码?

18 是十进制的,是最高字节 0..7 的位 0..5。所以你需要将它向上移动 2 并转换为十六进制。然后你得到 0x48。即

% printf %x $((18 << 2))
48 
%