题记:分析能力很大程度体现在分析效率上,语法细节乃至数据代码间的复杂性不应该成为主要困难
所谓逆向分析,不应该只是单纯的逆向代码,真正目标应该是逆向出代码作者的思维、意图
即透过代码分析意图
第二章:
编译器一旦发现代码中有浮点计算,则初始化浮点寄存器
汉字编码方式有些特殊,ascii和unicode都有与之匹配的编码格式,所以即使汉字使用2个字节,在char型字符串中任然可以显示中文,但这2个版本在内存中编码是不同的
C++为简化指针操作,对指针操作进行了封装,产生了引用类型。实际上引用类型就是指针类型,只不过它用于存放地址的内存空间对用户隐藏,引用通过编译器实现寻址,而指针需要手动寻址(解引用)。
const实现的常量是个伪常量,由编译器实现,在汇编中和普通变量没有区别。
第三章:
对于C++的全局对象和静态对象必须在main函数前构造,其实际就是遍历调用一个有构造函数的指针数组。
第四章:
如果有符号数和无符号数混除,结果则是无符号的,有符号最高位被当作数据位对待。
数据进位只是进位后的1位数据不在自身的存储空间中,而在标志位CF中。
由于数据进位破坏了有符号数最高位--符号位 就是溢出,所以溢出只针对有符号数。
编译器工作阶段:预处理--->词法分析--->语法分析--->语义分析--->中间代码生成--->目标代码生成
第五章:
C语言根据代码行的位置------低行数对应低地址&