【问题标题】:R8 Register BreakdownR8 寄存器击穿
【发布时间】:2014-02-26 09:33:07
【问题描述】:

我正在从 x86 ASM 迁移到 x64。

例子:

RAX 细分:

                -----------------------------------------
  EAX (32 Bit): |         16 bits       |   AH  |   AL  | 
                -----------------------------------------
                                        ^       AX      ^



R8:

                -----------------------------------------
  R8D (32 Bit): |         16 bits       |   ??  |   R8B | 
                -----------------------------------------
                                        ^       R8B     ^

R8B寄存器的高8位是什么?

【问题讨论】:

    标签: assembly 64-bit nasm cpu-registers


    【解决方案1】:

    它在 x64 中不存在,请参阅英特尔文档:
    http://software.intel.com/en-us/articles/introduction-to-x64-assembly
    您可以使用 R8W 访问前 16 位。

    【讨论】:

      【解决方案2】:

      如果你写代码:

        mov       r8, $0102030405060708
        mov       eax, r8d
      

      那么应该是在eax值0x05060708的代码执行之后。

      所以“R8B”的高8位是b'00000110'或者0x06。

      【讨论】:

        猜你喜欢
        • 2021-01-25
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 2021-07-05
        • 2010-12-09
        • 2016-11-25
        • 2011-03-02
        • 2021-03-25
        相关资源
        最近更新 更多