我正在读一本书来学习黑客(乔恩·埃里克森( Jon )称之为“剥削的艺术”),它从编写一个打印“Hello”的C程序开始。字符串10次,然后分析其程序集(英特尔语法)。在这本书中,指令指针被称为“eip”,而在我的笔记本上,它被称为“rip”。其他许多寄存器(如“ebp、->、rbp”等)也是如此。有什么不同吗?
发布于 2022-09-26 23:32:10
这本书是为32位x86体系结构编写的,其中32位寄存器名为eax、ebp、eip等。您的计算机与当今大多数x86机器一样,使用64位amd64 (又名x86-64)的体系结构,该体系结构设计类似于32位x86,但在其他许多不同之处中,64位寄存器名为rax、rbp、rip等。
虽然这些体系结构在概念层次上是相似的,但是利用依赖于非常具体的细节。像调用约定中的差异这样的问题将意味着本书的大部分内容将不适用于64位系统,因此是过时的。
如果您愿意,您可以在32位模式(gcc -m32)编译的程序上测试该书的示例。
https://stackoverflow.com/questions/73850572
复制相似问题