Sco*_*t J 7 c++ 64-bit x86 x86-64
我需要弄乱这些架构上的堆栈,这真的是一个n00b.我可以做任何阅读主题/谷歌搜索的指针.我正在寻找这些架构如何从根本上彼此不同.关于这个主题的维基百科文章http://en.wikipedia.org/wiki/X64
在x86中有8个32位寄存器,在x64中,寄存器各为64位,还有8个寄存器.128位SSE寄存器在两者中均为128位,但在x86上有8位,而在x64中有16位.另外一些指令是在x64中剪切的.
在x64模式下,您仍然可以使用32位名称(以"e"开头)而不是64位名称(以"r"开头)将寄存器用作32位,并且程序集大致相同.
http://en.wikipedia.org/wiki/X86#x86_registers
或者,如果你想要一些非常繁重的阅读(如1000页...)
http://www.intel.com/products/processor/manuals/index.htm 我阅读了这些手册的几百页,并学到了很多非常好的东西.
这里的所有答案都提到了寄存器集的变化,我将在此列出完整性:
EAX扩展到RAX等等)R8通过R15)XMM8通过XMM15)寻址模式也有变化:
0x0,他们的限制是0xffffffffffffffff.FS和GS可以具有超过32位的基数.0x0到0xfffffff.在64位模式下的线性地址空间被从分离0x0到0x00007ffffffff和从0xffff800000000000到0xffffffffffffffff.基本上,只有48位地址,地址符号扩展为64位.删除了各种说明:
INC带编码和的一个字节指令.该字节成为前缀.40+rw40+rd4xREXLDS,LDS,LSS.还有更多的差异,我只能记住我的头脑.如果我能想到更多,我会添加它们.
x86 CPU 中的所有寄存器都是 32 位的,而 64 位的则是 64 位的:)
如果您使用指针算术,则 sizeof() 将产生不同的结果,增量操作也会产生不同的结果。
我觉得您可以在英特尔网站上获得有关这两种架构的详细信息,甚至还可以获取突出显示 64 位处理器添加的新指令的指令集。
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |