【问题标题】:Assembly compl 32 bit, 8 bit汇编编译 32 位、8 位
【发布时间】:2014-10-30 15:17:40
【问题描述】:

我正在查看一些汇编代码,我看到了:

cmpl $0x1d32, -0x4(%ebp)

由于 -0x4(%ebp) 是 1 个字节,它显然不能在其中存储其他值(7474)。因此,这段代码何时将它们显示为相等?它会只比较立即值的最高/最低有效字节还是有某种隐藏的词扩展?

【问题讨论】:

  • 谁说-0x4(%ebp)是1个字节? cmpl 中的l 后缀明确表示它是长的,即4 字节(32 位)。

标签: assembly 32-bit


【解决方案1】:

-0x4(%ebp) 是一个地址,它没有任何关联的大小。指令中的 l 后缀将大小指定为 32 位整数 (long)。因此,处理器将从给定地址开始获取 4 个字节,并将其用作操作数,以 little-endian 字节顺序(即从最低有效字节开始)解释它。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 2012-10-22
    • 2011-03-08
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2010-11-08
    • 2011-11-04
    • 2013-08-25
    相关资源
    最近更新 更多