-1

我想学习汇编,但我真的很看重多平台代码,而且我见过的大多数汇编语言和教程只迎合一种特定的汇编子语言(MASM 或 TASM 或 YASM)和一种特定的操作系统(Mac 或Windows 或 Linux)。

是否有适用于 Mac OS X、Windows 和 Linux 的汇编语言和教程?我怀疑 GCC 可以识别一些 X86 汇编器格式,并且 GCC 是一种多平台编译器——这种语言会被称为什么,是否有教程?

也发布在r/programming上。

4

2 回答 2

2

对于您的需求,请参见

nasm (http://www.nasm.us)

以及 nasm 的一些好的“起点”

  1. http://leto.net/writing/nasm.php
  2. http://docs.cs.up.ac.za/programming/asm/derick_tut
于 2012-09-19T18:05:40.247 回答
2

扩展无聊的长答案

恐怕每个汇编程序都有自己的陷阱。

我开始了我的自定义宠物项目编程语言(转换为“C”,不生成二进制代码),并且想要制作一个完整的编译器,所以我对您提出的同一主题进行了一些快速研究。

例如,MASM 和 NASM 都针对 x86 处理器,但是,汇编器语法不同。

您还可以考虑您正在使用什么操作系统(而不是什么处理器),您可能必须与之交互。

一些汇编程序书籍是从非常电子化的角度编写的,这使得学习汇编程序变得非常困难。

先决条件

在回到汇编程序之前,您可能想学习一些主题。您可能已经知道这些主题的大部分内容,但是,最好再读一读。

(1) (Re) 了解不同的数字表示法,如何在不使用计算器的情况下手动将十进制数转换为十六进制、八进制和二进制表示法。

(2) (Re) 了解字符的存储方式,ASCI & EBDIC & MAC,您可能需要打印的 ASCII 字符图表。

(3) (Re) 了解布尔&位、逻辑、位运算、“AND”、“OR”、“XOR”

(4) (Re) 了解内存存储大小。Giga、Mega、Byte、Word、QWord 或 LongWord。

(5) (Re) 了解有符号整数和无符号整数的区别。以及如何在内存中存储不同的整数。

快速简短的回答

了解更多使用的 3 种架构和操作系统的基础知识

(1) 学习单个 CPU 的基础知识,而不是全部知识,例如 x86 和 Windows 中的 NASM。

(2) 继续使用其他架构,例如 x86 和 Linux 中的 NASM。

(3) 继续其他架构,例如 MacIntosh。

(4) 学习在前 2 个目标中完成简单但等效的任务。

(5) 在第三个目标中学习做同样的事情。

(6) 检查操作系统调用,添加 2 个数字并将结果存储在任何 CPU 中的寄存器中并不困难。但是,调用在控制台窗口或 GUI 窗口中显示消息的系统调用可能会改变。

(7) 大多数汇编程序被称为“宏汇编程序”,允许使用单行代码转换为多行 opf 代码。将它们用于单个宏,该宏在多个汇编程序中读取相同,但在每个 CPU 中翻译不同。

(8) 给组装班的 kiteh,一个金枪鱼罐头。

干杯。

于 2012-09-19T18:41:30.873 回答