从哪里学习 x64 汇编?

Where to learn x64 assembly from?

好吧,我知道 C++、C#、Java 和其他一些语言,我决定接下来学习汇编,但我觉得我从一开始就碰壁了。我只需要有人给我指出正确的方向。

问题如下:

  1. 有人告诉我,从互联网上学习汇编比从书本上学习更好,因为汇编取决于您的硬件,而书籍大多已经过时。是真的吗?

  2. 我有一个 64 位 CPU 并且我正在使用(或至少尝试使用)FASM。我在哪里可以找到必要的文档?

  3. 我完全糊涂了,因为我看过的大多数教程对我来说都不起作用。是因为硬件差异吗?如何找到合适的教程?

  4. 我可以在我的 64 位计算机上 运行 x86 和 x32 汇编吗?

  5. 你能不能帮我写一个简单的汇编程序(可以在我的电脑上运行)并在注释中给出分解?我在我的英特尔酷睿 i5 CPU 上 运行ning 64 位 Windows 10。请

我认为这是一个有效的问题。很难找到有关汇编程序的最新信息。

  1. 是的。许多印刷和在线资源都描述了 i386 (x86) 汇编程序,而不是新的 amd64 (x86_64)。许多事情都发生了变化,例如函数参数过去是在堆栈上传递,但现在它们是在寄存器中传递。这适用于 Unix 和 Windows.

    基本上,请确保您阅读的是 64 位汇编。

  2. 何不试试 online manual。请注意,对于简单的东西,汇编器并没有什么不同。

  3. 我没有 Windows 但如果您在使用任何特定程序时遇到问题,可以在这里询问。您将需要 post 实际失败的程序。

  4. 是的,但是您必须 link 它针对 32 位库并使用 32 位版本的 Win32 API。但是,如果您刚起步,为什么要在 1980 年代编程,那时您可以使用现代指令集?

  5. 试试this.

还有,如果你打算用汇编编程,我强烈建议你使用调试器。我使用运行良好且免费的 GDB,在 Windows 上,您可以使用非常棒的 Visual Studio 调试器。