我想要了解汇编器。但是,有非常少的资源做的汇编与OS X.

有没有人在那里已经编写了在大会的一个Mac?你在哪里学的?

而且,没有任何理由我不应该这样做会?做我风险(大)崩溃我的计算机无可挽回的?

有帮助吗?

解决方案

如果你使用一个支持Mac看到海湾合作委员会内联的汇编器。否则,看到nasm.我不能给任何体面的引用,PPC ASM(他们是少数和之间),但我建议以下的东西要学x86asm:

还有,如果你不是在核心模式,然后有没有机会拧任何事,真的,甚至如果你是在核心模式很难真正地破坏任何东西。

编辑:此外,获得海湾合作委员会和诸如从工业化不Macports或somesuch.你在为一个世界的畸形马赫-O文件,如果你没有。不过瘾诊断文件格式的问题当你刚开始asm黑客攻击。

其他提示

汇编语言由硬件平台决定,而不是由操作系统决定。鉴于OS X在Intel平台上运行且为64位,您应该查找有关x64(也称为AMD64)汇编程序的信息。查看维基百科文章( http://en.wikipedia.org/wiki/X86-64)有很多关于x64文档的链接。

此外,OS X工具文档可能包含有关x64汇编程序的大量信息。特别是Netwide Assembler(NASM - http://developer.apple.com /documentation/DeveloperTools/nasm/nasmdoc0.html )可能有关于如何使用汇编程序构建OS X应用程序的文档。

要开始学习汇编,您可能希望从简单的C程序开始,并要求GCC使用-S选项为其生成汇编代码:

gcc -S hello.c -o hello.asm

然后,您将能够理解如何调用函数,传递参数等。

Nasm / yasm是你最好的选择; gcc内联语法非常严重,有时候使用起来非常痛苦,而且还有一些无法做的事情。 Nasm的宏语法也非常有用,它是像汇编这样没有内置模板功能的语言中的天赐之物。

XCode(即GCC)对编写汇编程序有很大的支持。这是一个有趣的事情(虽然你不太可能需要它),你可以做的最糟糕的事情就是崩溃你正在编写的程序,就像在C中一样。只是谷歌的'gcc inline asm x86教程'和你应该找到很多起点。不要担心某些内容似乎是特定于Linux的,它们通常在XCode中也能正常工作。

(编辑)...假设您当然拥有Intel Mac;如果没有,则将'x86'替换为'ppc'。

此处

我在Mac上编写了程序集。它是使用MPW的摩托罗拉680x0汇编程序。我在CodeWarrior和ProjectBuilder中曾多次触及PowerPC汇编程序。现在ProjectBuilder被称为XCode,而且还有Intel。汇编程序是XCode中的众多工具之一。

我最初学习了Apple II上的汇编程序:内置ROM的6502机器语言监视器,Sweet16迷你汇编器等。后来,我使用英特尔80186汇编程序来加速C代码的慢速运算,并为一所大学的英特尔80186汇编程序的一天课程付费。后来,我不得不为Mac维护一些680x0的程序集。那是很久以前的事了。

我认为没有任何理由不进行组装。学习很棒。尽你所能。进入足够低级别的调试器并查看反汇编代码。

我的建议是:

  

不要害怕。

没有理由不这样做;你无法用汇编语言做任何事情,你不能用更高级别的语言来做,比如C。

就工具而言,您可能需要安装 MacPorts 并获取GNU汇编程序。这可能是也可能不是最简单的方法,但它是免费的,您可以在网上某处找到用于在GNU汇编程序中编写Unix程序的教程文档。

在具有操作系统的系统上编写汇编语言需要知道两件事(而不是'裸机'汇编,这是一个独立的世界):

  1. 指令集的工作原理 - 如果您使用的是英特尔Mac,则为英特尔X86加载资源,对于PPC来说仍然是合理的设置,例如 Mac OS X Internals

  2. 如何汇编程序链接 - 如果您安装了Developer工具,则可以使用GCC和相关工具

  3. 如何与操作系统对话 - 这里的Mac程序集 lot 比Windows或Linux记录更少。您可能需要编写等效的C程序并使用'gcc -S'来查看哪些调用/堆栈恢复约定是合适的。这取决于你想要做什么,但在最低限度你需要OS系统调用IO和内存分配。

  4. 一个很好的起点是这里

如果您安装了开发人员工具,则只需打开终端并输入 GNU汇编程序 - Binutils 的一部分。)

对于PPC尝试Lightsoft

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top