我想学习汇编程序,但我非常重视多平台代码,而且我看到的大多数汇编语言和教程只能满足一种特定的汇编程序子语言(MASM或TASM或YASM)和一种特定的操作系统( Mac或Windows或Linux)。
是否有适用于Mac OS X,Windows和Linux的汇编语言和教程?我怀疑有一些GCC识别的X86汇编程序格式,而GCC是一个多平台编译器 - 这种语言会被调用,是否有教程?
也发布在r/programming。
答案 0 :(得分:2)
根据您的需要,请参阅
nasm(http://www.nasm.us)
对于nasm而言,还有一些好的“起点”
答案 1 :(得分:2)
延长无聊长答案
我担心每个汇编者都有自己的陷阱。
我开始使用自定义宠物项目编程语言(转换为“C”,不生成二进制代码),并希望制作完整的编译器,因此我对同一主题进行了一些快速研究。 / p>
例如,MASM& NASM目标x86处理器,但汇编语法不同。
你也可以考虑使用什么操作系统(不是什么处理器),你可能需要与它进行交互。
一些汇编书籍是以非常电子化的观点编写的,这使得学习汇编程序变得非常困难。
<强>先决条件强>
在回到汇编程序之前,您可能想要学习一些主题。您可能已经知道了大多数这些主题,但是,再次阅读可能会更好。
(1)(重新)了解不同的数字符号,如何手动将十进制数更改为&amp;来自十六进制,八进制和二进制表示法,不使用计算器。
(2)(Re)了解角色的存储方式,A.S.C.I。 &安培; EBDIC&amp; MAC,您可能需要打印的ASCII字符图表。
(3)(重新)了解布尔&amp;位,逻辑,按位运算,“AND”,“OR”,“XOR”
(4)(重新)了解内存存储大小。 Giga,Mega,Byte,Word,QWord或LongWord。
(5)(Re)了解有符号整数和无符号整数之间的区别。以及如何在内存中存储不同的整数。
快速简答
了解3种更常用架构的基础知识,&amp; O.S。
(1)了解单个CPU的基础知识,而不是所有内容,例如x86和Windows中的NASM示例。
(2)继续使用其他架构,例如x86 plus Linux中的NASM示例。
(3)继续其他架构,例如MacIntosh。
(4)学习在前2个目标中完成简单但等效的任务。
(5)学会在第三个目标中做同样的事情。
(6)检查O.S.电话,添加2个数字并不难将结果存储在任何CPU的寄存器中。但是,调用在控制台窗口或GUI窗口中显示消息的系统调用可能会更改。
(7)大多数汇编程序被称为“宏汇编程序”,允许使用单行代码转换为几行opf代码。将它们用于在几个汇编程序中读取相同内容的单个宏,但在每个CPU中进行不同的转换。
(8)给装配班的金枪鱼罐头。
干杯。