Assembly x86和x64体系结构的汇编语言有什么区别?

Assembly x86和x64体系结构的汇编语言有什么区别?,assembly,x86,x86-64,Assembly,X86,X86 64,我正在学习这本书。现在它反复地说要使用x86处理器,因为它的源代码是基于x86的。但是我的笔记本电脑是amd64型的。所以我想知道有多少不同。我能继续阅读这本书并理解它吗?实际的64位程序使用不同的指令集(尽管它有很强的家族相似性)。但这不需要担心,因为它是向后兼容的:如果不尝试将32位代码编译为64位代码,它运行得很好。我认为x64是支持64位代码的x86指令集扩展的体系结构的名称 x86基本上意味着英特尔80x86兼容 如果您刚刚开始编程,也可以检查一下,这样我就不会太担心了。首先想到的是线

我正在学习这本书。现在它反复地说要使用x86处理器,因为它的源代码是基于x86的。但是我的笔记本电脑是amd64型的。所以我想知道有多少不同。我能继续阅读这本书并理解它吗?

实际的64位程序使用不同的指令集(尽管它有很强的家族相似性)。但这不需要担心,因为它是向后兼容的:如果不尝试将32位代码编译为64位代码,它运行得很好。

我认为x64是支持64位代码的x86指令集扩展的体系结构的名称

x86
基本上意味着英特尔
80x86
兼容


如果您刚刚开始编程,也可以检查一下,这样我就不会太担心了。首先想到的是线程的使用以及它们之间的细微差别

然而,我假设你是从一开始就想直接跳入“黑客”。这完全不可能发生。您需要了解,黑客攻击是建立在编程的基础之上的。虽然有许多程序可以运行来做包嗅探之类的事情,但对于那些不知道如何处理它们的人来说,这些程序几乎是无用的

我有一些假设,我可能是错的,但大多数人读了这样一本书,却没有背景知识。如果你想学习“黑客”,从基础开始。查找并使用“从头开始的Linux”从头开始构建操作系统。这是一个良好的基本开端。学习C语言和C++语言,而不是像Visual Basic这样的语言。这些将帮助您了解如何构建和运行程序的基础知识


我知道上一次我们为了好玩而“从头开始Linux”时,文档中有几个小错误,当你知道你在做什么时,这些小错误并没有什么大不了的,但是noob会简单地复制和粘贴命令,当出现问题时会发现自己在挠头。从一开始就开始,这是一条路。

只要你构建32位应用程序而不是64位应用程序,你就应该很好。目前Ubuntu-13.10没有虚拟机(@Alex:不需要。64位Linux有很多版本可以运行32位代码(Debian,RedHat)。64位Windows也是。为了避免混淆,AMD64(和Intel64)确实是x86-64,不要与安腾家族使用的IA-64混淆。还有值得一看的程序员参考手册,特别是如果您实际拥有AMD芯片,并且需要知道它与类似的英特尔芯片有何不同。。。(仅供参考GNU和大多数其他非wintel来源似乎称其为x86_64,甚至仍然是amd64。AMD最初的名称是amd64,但这在英特尔的运行情况当然不是很好。英特尔称其实现为“英特尔64”有一段时间了。Afaik x64主要由微软使用。请参阅)。仅此而已(几乎)同样的事情,只要你不说IA64,一切都很好。我对C和C++和Linux OS很熟悉。我不是在一夜之间跳进这本书的。很多书我没有买只是因为那些只是解释如何使用软件,而不是建立它们。我想通过这本书我可以获得关于OS和网络的知识。g、 目前我正在关注这篇关于linux的教程。这很酷。人们抓到这样的东西并认为自己会在一夜之间成为一名黑客是很常见的。他们看了几部电影,认为这一切都很有趣,但没有工作。他们从不显示命令行工作和等待的时间。嗯,这显示了一点在“Takedown”中,lol。这个答案不太好……32位x86和64位x86中的指令集以及二进制编码几乎是相同的,除了在64位模式中使用新的指令前缀(以及1字节
dec
/
inc
操作码的退役,以及这些前缀的重新解释);前缀字节是x86自诞生以来的一项功能。64位x86和32位x86之间的差异比32位x86和16位x86之间的差异要小……是的,可以创建在32位和64位模式下运行相同的x86二进制代码。