所以我已经拆解了一个小型的c ++程序(因为我已经开始学习了很多关于程序集的知识),并且程序集在主程序顶部做的第一件事就是
var_E4= byte ptr -0E4h
我知道ptr用于声明汇编程序无法隐含知道的数据大小,但经过大量的调查后,我还没有找到这个特定设置的示例或解释。字节ptr是否告诉汇编器将-228分配给var_E4(基本上告诉它将其视为单个带符号的十六进制值)?如果不是发生了什么?
答案 0 :(得分:2)
这只是一个允许它编写[rsp + var_E4]
而不是[rsp - 0E4h]
的宏定义,以帮助提高反汇编输出对于访问堆栈上的局部变量的指令的可读性。 / p>
您没有告诉我们您使用的是哪个反汇编程序,或者提供任何上下文(例如使用此宏的行)。不过,我认为可能还有更多的话要说。以这种方式编写它与使用宏的任何地方替换值对你从汇编中获得的二进制机器代码没有任何影响。