2016-02-28 53 views
0

为什么powerpc的操作码与反汇编器输出不同?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。但是,操作码表,它说,操作码为18。这是为什么?我是否错误地解释了操作码?

+0

张贴外部链接作为您的问题的主要来源不工作在这里,因为这些链接可以消失。在问题中发布源代码和反汇编的相关部分。 –

+0

@dwelch它不会让我嵌入你不能剪切和粘贴一些rason – Bob

+0

的源代码?这实际上只是键入... –

回答

2

18是十进制的,并且是顶部字节0..7的位0..5。所以你需要将它转换为2并转换为十六进制。然后你得到0x48。即。

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