【问题标题】:PowerPC disassembler output different from opcodesPowerPC 反汇编程序输出不同于操作码
【发布时间】:2016-02-28 07:49:46
【问题描述】:

为什么 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。这是为什么呢?我是否错误地解释了操作码?

【问题讨论】:

  • 发布外部链接作为您问题的主要来源在这里不起作用,因为这些链接可能会消失。在问题中发布源的相关部分和关于 SO 的反汇编。
  • @dwelch 它不会让我为某些原因嵌入源代码
  • 你不能剪切和粘贴?这实际上只是打字......
  • @dwelch 哦,对不起,谢谢
  • 48h 不适合 6 位,因此它必须是字节值。

标签: computer-architecture disassembly powerpc opcode


【解决方案1】:

18 是十进制的,是最高字节 0..7 的位 0..5。因此,您需要将其上移 2 并转换为十六进制。然后你得到0x48。即。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-08-06
    • 2017-05-12
    相关资源
    最近更新 更多