Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux平台上学习x86汇编的最佳方法是什么?_Linux_Assembly_X86 - Fatal编程技术网

在Linux平台上学习x86汇编的最佳方法是什么?

在Linux平台上学习x86汇编的最佳方法是什么?,linux,assembly,x86,Linux,Assembly,X86,我以前没有汇编编程方面的知识,我想学习如何在Linux平台上编写x86汇编。然而,我很难找到一个好的资源来教自己 《装配的艺术》这本书看起来不错,但它教会了我们HLA。我不想学一种方法,然后再重新学习。RISC体系结构似乎有更好的组装资源,但不幸的是,我没有RISC处理器可以学习。有人有什么建议吗?可能没有什么比该网站上的其他资源更好的了。我发现这是一个非常好的资源。它后面有一个部分也是针对Linux汇编的。Try是一个windows托管的8086仿真器,带有汇编程序和调试器。它附带了一个教程。

我以前没有汇编编程方面的知识,我想学习如何在Linux平台上编写x86汇编。然而,我很难找到一个好的资源来教自己


《装配的艺术》这本书看起来不错,但它教会了我们HLA。我不想学一种方法,然后再重新学习。RISC体系结构似乎有更好的组装资源,但不幸的是,我没有RISC处理器可以学习。有人有什么建议吗?

可能没有什么比该网站上的其他资源更好的了。

我发现这是一个非常好的资源。它后面有一个部分也是针对Linux汇编的。

Try是一个windows托管的8086仿真器,带有汇编程序和调试器。它附带了一个教程。

汇编语言编程的艺术

我从一本关于8086的书中学习了x86汇编程序(我现在记不起它的名字了……它显然很旧,而且是紫色的。如果你真的感兴趣,我回家后可以把它挖出来)。这只会教你16位的东西,至于更高级的32位的东西,我在网上读了一些教程。我从来没有做过64位。至少一开始,你的目标操作系统可能并不重要,因为你的级别太低了。。。BIOS是您真正关心的全部。如果您没有访问测试系统的权限,仿真器可能是一个不错的选择,正如其他人所提到的,但是您也可以构建自己的8088或8086,而不需要从离散的部分进行太多的麻烦。您可以在网上轻松找到教程和电路图。这应该不到50美元,而且是一次很好的学习体验——你基本上是在从头开始构建主板

如果你不太喜欢x86汇编并且想学习RISC,我推荐PIC微控制器。你可以花不到50美元买一个初学者工具包(我的Pickit1甚至可以在Linux下工作)。他们有大量的文档和大量针对业余爱好者的第三方教程。

有一些关于x86之外的体系结构的资料

如果您对RISC体系结构感兴趣,可以在上运行Linux。Qemu模拟了几种RISC架构,如PowerPC、ARM和MIPS。您可能会找到一个随时可用的Qemu硬盘映像


另一种尝试RISC体系结构的方法是使用gdb的内置模拟器。

学习汇编级编程实际上有两个部分:基本概念,然后是特定的体系结构。如果你没有接触过asm编程,我强烈建议你先用一个简单、小的体系结构了解基本知识,即使它可能不直接适用于任何真正的硬件。如果很多人都指向某个特定的资源,比如“艺术…”,那么再看一看,用它来了解什么是体系结构,如何使用基本工具(asm、调试器、disasm等)


一旦这些问题解决了,您就可以开始研究更高级的指令集了。x86体系结构和指令集非常复杂,有许多模糊的方法可以扭曲你的大脑-在处理之前先学一些简单的东西。

别忘了拿一本书。

尽管我在学校认识的很多人都讨厌这本书,但我还是会把它链接起来:

我使用这本书的主要原因是它在Linux上使用x86和GNU汇编程序。最后一点很有帮助,因为我必须在我们学校的实验室使用汇编程序,如果你不知道的话,语法与Intel语法不同


此外,我还想补充一点,学习高级语言如何编译成汇编语言确实帮助了我前进。

x86汇编确实是一种英特尔语言,最好是通过英特尔芯片和不支持DOS的windows平台来学习

如果你有类似WinXP的东西,那么以前有一个DOS解释器,它向用户展示asm的基本知识,允许用户反转命令并实时调整代码,然后将代码组装成一个可以在解释器上运行的块

它被称为“凯特曼翻译”


它仅适用于DOS asm,但它非常独特,因为它可以让你看到所有寄存器和标志发生了什么,并允许一个完全无知的人掌握逻辑,好吧,但是如果我不能使用它,学习HLA有什么意义?你不能使用它为什么?免费下载。在任何情况下,这本书都会介绍常规指令集,包括如何编写HLA宏随后提供给您的结构。我开始阅读这本书,但发现很难,并且发现HLA阻碍了我。这有点像通过学习葡萄牙语来学习西班牙语。使用FASM有什么好书可以教吗?我可以实际使用HLA来调试x86架构上的程序吗?@unknown-您可以使用任何汇编知识片段来调试程序。但是老实说,有更好的方法来调试你的代码。你读过这个问题吗?或者答案呢?初学者工具包听起来很有趣。我可以调查一下。谢谢。+1,作者正在编写新版本。他最近写道,“我现在已经完成了第9章(共13章)的2/3;在大约175000个单词中,我已经完成了113000个单词。必须在6月30日之前完成。”有关更新,请参阅。这意味着要运行windows。这是一个巨大的牺牲。@CharlieMartin“运行windows”“一个巨大的牺牲”让我咯咯笑了起来。Linux和Unix万岁!