- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是对我用 C 编写的反汇编 32 位程序进行一些分析。以下是反汇编程序输出的一部分:
41153c 02 00 add al, [eax]
41153e 00 00 add [eax], al
411540 44 inc esp
411541 15 41 00 F8 FF adc eax, 0xfff80041 ; "A"
411546 FF invalid
我只是想弄清楚 ADC 指令。根据我在 Intel 开发人员手册和 x86 ASM 上的各种文章中所读到的内容,操作码 0x15 是使用 EAX 作为目标的 ADC 指令,并且操作码后面似乎是一个四字节的“立即数”,表示用于加进位的内存地址。
但是我有点不确定为什么以下字节 (0xFF) 被标记为无效。
我对汇编程序很陌生,但我假设这与进位标志有关,并且可能在那里对值进行符号扩展。
我使用了两个独立的反汇编器来查看代码,一个将其标记为无效,另一个则直接忽略它。
如果有人可以提供一些建议,我将不胜感激。
谢谢
更新
我将在这篇文章中添加更多信息,因为还有另外两个 ADC 操作,其中一个没有额外的“无效”字节
411547 FF 04 00 inc [eax+eax]
41154a 00 00 add [eax], al
41154c 61 popa
41154d 15 41 00 EC FF adc eax, 0xffec0041 ; "A"
411552 FF invalid
411553 FF 04 00 inc [eax+eax]
411556 00 00 add [eax], al
411558 5C pop esp
411559 15 41 00 74 65 adc eax, 0x65740041 ; "A"
41155e 73 74 jnc 0x4115d4 ↓
发生的第二个 ADC 也有额外的 0xff“无效”字节,但第三个没有。
据我所知,所有三个 ADC 操作之间的唯一区别是前两个以 0xff 开头并有一个额外的“无效”字节,而第三个则没有。我假设这是在形成某种标志以指示是否需要额外的字节。
最佳答案
这不是代码。您正在尝试分解数据。
如果我们重新排列对齐到 4 的字节,我们可以理解它:
411548: 04 00 00 00 ; integer 4
41154C: 61 15 41 00 ; address 0x411561
411550: EC FF FF FF ; integer 0xFFFFFFEC (-20)
411554: 04 00 00 00 ; integer 4
411558: 5C 15 41 00 ; address 0x41155C
41155C: 74 65 73 74 ; string 'test'
关于c - x86 ADC 进位标志和长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846483/
有什么方法可以获取 Python 中移位操作移出的位,例如 x86 汇编中的进位标志? 我搜索了 python 手册和互联网,但似乎找不到任何有用的东西。 我需要它来检查整数是奇数 (CF=1) 还是
众所周知,CF表示无符号进位,OF表示有符号溢出。那么,汇编程序如何区分无符号和有符号数据,因为它只是一个位序列? (通过类型信息的附加内存存储,或通过位置信息或其他?)这两个标志可以互换使用吗? 最
我有一个 df ,如下所示: | id | qty | item | +-----+------+------+ | 001 | 700 | CB04 | | 002 | 500 | NaN
我是一名优秀的程序员,十分优秀!