我想学习汇编语言。然而,在OS X上学习汇编的资源非常稀少。
有没有在Mac上使用汇编语言编程的人?你是在哪里学习的?
此外,是否有任何理由不应该使用汇编语言?我会(显著地)冒着永久崩溃计算机的风险吗?
要开始学习汇编语言,您可以从简单的C程序入手,并使用-S选项要求GCC生成汇编代码:
gcc -S hello.c -o hello.asm
XCode(即GCC)对编写汇编语言提供了很好的支持。学习它是一件有趣的事情(尽管你不太可能经常需要它),最糟糕的情况就是像在C语言中一样崩溃你正在编写的程序。只需搜索“gcc inline asm x86 tutorial”,你就可以找到很多入门点。不用担心有些教程似乎是针对Linux特定的,它们通常在XCode中同样适用。
(编辑)……当然,前提是你有一台英特尔Mac;如果没有,请将“x86”替换为“ppc”。
我曾在Mac上编写汇编程序。使用的是Motorola 680x0汇编语言和MPW。我也接触过PowerPC汇编语言,用过CodeWarrior和ProjectBuilder。现在ProjectBuilder被称为XCode,还有Intel。汇编器是XCode中众多工具之一。
我最初学习汇编语言是在Apple II上:6502机器语言监视器内置ROM、Sweet16迷你汇编器等等。后来,我使用Intel 80186汇编语言加速C代码的运行速度,公司还为我安排了一天的Intel 80186汇编语言课程。后来,我还得维护Mac上的一些680x0汇编代码。那是很久以前的事情了。
我认为没有理由不去学习汇编语言。学习是好的。尽可能多地学习。进入足够低的级别调试器,查看反汇编代码。
我的建议是:
不要害怕。
你没有理由不这样做;在汇编语言中,你无法做到的事情在高级语言如C中都可以实现。
至于工具,你可能想安装MacPorts并获取GNU汇编器。这可能是最简单的方法,而且它是免费的,你可能可以在网络上找到有关在GNU汇编器中编写Unix程序的教程文档。
在使用操作系统的系统上编写汇编语言(与“裸机”汇编不同)需要了解两三件事:
指令集如何工作 - 如果您有Intel Mac,则有大量针对Intel X86的资源,例如Mac OS X Internals。
如何汇编链接您的程序 - 如果您安装了开发人员工具,则拥有GCC和相关工具
如何与操作系统通信 - 这是Mac汇编文档比Windows或Linux少得多的地方。您可能需要编写等效的C程序并使用“gcc -S”来查看适当的调用/堆栈恢复约定。这取决于您想要做什么,但至少需要IO和内存分配的OS系统调用。
一个很好的起点是这里。
For PPC try Lightsoft