最近我决定学习装配会是一个好主意,但是现在,我真的被所有关于在论坛中组装的材料所震撼,这里,tutos等(其中一些很旧)所以我我希望有一些关于汇编语言的方向,如何“编译”等,我也希望它能够在我的CPU上运行,这样我才能练习,这里是来自CPU-Z的CPU详细信息
AMD Athlon 64 3200 +支持的说明: MMX(+),3DNow!(+),SSE(1,2,3),x86-64
注意:如果可能的话,我希望这是面向Windows的(这真的很重要吗?)
提前致谢。
答案 0 :(得分:7)
我认为开始学习汇编语言的最佳方法之一是查看编译器为您熟悉的语言创建的输出。例如,如果您熟悉Visual C ++,那么用C ++编写一些非常简单的代码,并使用集成调试器来显示编译器创建的汇编语言(确保使用优化 off 进行编译) )。编写一些简单的for
循环,赋值,算术等,看看创建的汇编语言是什么样的。
对于学习,您不需要了解您在问题中列出的指令集扩展。您需要关心的是x86 32位指令。一旦你有了基础,你就可以了解64位指令,MMX,SSE等。
一旦你有了一些基本的理解,你就需要一个汇编程序。一个好的,支持良好的开源通用汇编程序是nasm。
答案 1 :(得分:4)
我的建议是选择一个非常古老的8位处理器,如8080,并使用模拟器,只是为了让你的基本概念直截了当。坦率地说,一旦你知道一种汇编语言,学习另一种汇编语言就很容易了(我知道大约八种),但第一步是最难的。
答案 2 :(得分:1)
我想问一下,跳到学习x86-64是否是一个好主意。
通常情况下,最好先使用“更简单”的RISC语言(您可以获得许多RISC处理器的仿真器),为您提供汇编基础知识,然后在以后学习更复杂的架构仍然很热衷。
答案 3 :(得分:1)
你说面向Windows,但最简单的入门方法实际上是在程序集中进行一些oldskool DOS / Command编程。给自己做一些简单的任务,比如'编写一个程序,将数字1到10打印到控制台'或'编写一个程序来读取文本中的行并将其反转'。
答案 4 :(得分:0)
您可以尝试阅读编译器上的Crenshaw tutorial。我知道它看起来有点奇怪,但他正在构建一个针对m68k汇编的最小的小编译器,所以你可以看到你已经习惯的编程概念是如何以一种非常清晰,相对简单的汇编语言表达的。
缺点:m68k程序集与x86程序集不太相似,所以在完成后你将有另一轮学习。
答案 5 :(得分:0)
如果你想学习汇编程序,你必须学习计算机的工作原理。而且我不是在谈论'我的操作系统中的这个lib负责这个和那个......'我的意思是硬件。如何构建CPU,ALU是什么,内存如何工作,程序如何执行。这是第一步,然后你可以明星学习汇编程序,这是汇编程序的全部 - 控制所有这些设备。如果你不知道它是如何工作的,你就无法控制它。
我建议浏览一本关于计算机技术/架构的书,它会为你节省100多个小时的谷歌和阅读你不懂的东西。
从i MIPS开始,最简单的拱门。
答案 6 :(得分:0)
您可以尝试查看Rom Hacking社区生成的一些文档,这些文档针对的是更简单的系统。一些社区的汇编教程可能会更容易接受,因为目标受众有点不同。虽然它肯定不是技术的最前沿,但如果你了解熟悉的东西,它可能会让你的兴趣多一点,同时学习旧硬件的工作原理。此外,一些仿真器具有图形化调试工具,根据您的喜好,这些工具可能比命令行机器级调试器更容易上手。另一方面,考虑仿真和游戏修改具有可疑的合法性也很重要。
答案 7 :(得分:0)
我在兰德尔海德的书中学习装配工4个月,这是汇编语言的艺术。它是我发现的最好的汇编手册。你可以从下载 here