从哪里学习x64汇编?

Ala*_*ane 37 64-bit assembly fasm

好的,所以我知道C++,C#,Java和其他一些语言,我决定接下来学习装配,但我觉得我从一开始就碰到了坚固的砖墙.我只需要有人指出我正确的方向.

以下是问题:

  1. 我被告知,从互联网学习装配比从书本学习更好,因为装配取决于你的硬件和书籍大多是过时的.真的吗?

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

  3. 我总是感到困惑,因为我见过的大部分教程都不适合我.那是因为硬件差异吗?我如何找到正确的教程?

  4. 我可以在64位计算机上运行x86和x32程序集吗?

  5. 能不能请你这么好,给我一个简单的汇编程序(可以在我的电脑上运行),评论中有细分吗?我在我的intel核心i5 CPU上运行64位Windows 10.请.

jfo*_*erg 38

我认为这是一个有效的问题.找到汇编程序的最新信息可能有点困难.

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

    基本上,确保您正在阅读有关64位汇编的内容.

  2. 为什么不尝试在线手册.请注意,汇编程序在简单的东西方面并没有那么不同.

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

  4. 是的但您必须将其与32位库链接并使用32位版本的Win32 API.但是如果你刚开始,为什么要在20世纪80年代开始编程,那时你可以使用现代指令集?

  5. 试试这个.

另外,如果您要进行汇编编程,我强烈建议您使用调试器.我使用GDB运行良好并且是免费的,在Windows上你可以使用非常棒的Visual Studio调试器.

  • 这篇文章鼓励学习 x64 汇编,但其中的两个链接都指向 x86 教程......什么? (4认同)
  • 不使用调试器的好处是,不是使用学习程序集的试错法(调试器非常适合),您不得不更好地理解特定体系结构的汇编语言.这些天我在SO上回答汇编语言问题,而不是花时间尝试自己编译,我通常会在视觉上检查代码中的错误.如果我可以选择雇用一个无法在没有调试器的情况下调试的人和一个可以(假设其他条件相同)的人,我会选择后者. (2认同)