我在哪里可以找到的工具,用于学习,汇编在OS X?[关闭]
题
我想要了解汇编器。但是,有非常少的资源做的汇编与OS X.
有没有人在那里已经编写了在大会的一个Mac?你在哪里学的?
而且,没有任何理由我不应该这样做会?做我风险(大)崩溃我的计算机无可挽回的?
解决方案
如果你使用一个支持Mac看到海湾合作委员会内联的汇编器。否则,看到nasm.我不能给任何体面的引用,PPC ASM(他们是少数和之间),但我建议以下的东西要学x86asm:
- 这本书 扭转由埃尔达德Eilam
- 编制简单的C源与海湾合作委员会-S和阅读大会产生的
- 使用 乌兹的沙床上神
- 加入#openrce上irc.freenode.net 和使用 OpenRCE
还有,如果你不是在核心模式,然后有没有机会拧任何事,真的,甚至如果你是在核心模式很难真正地破坏任何东西。
编辑:此外,获得海湾合作委员会和诸如从工业化不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程序的教程文档。
在具有操作系统的系统上编写汇编语言需要知道两件事(而不是'裸机'汇编,这是一个独立的世界):
-
指令集的工作原理 - 如果您使用的是英特尔Mac,则为英特尔X86加载资源,对于PPC来说仍然是合理的设置,例如 Mac OS X Internals 。
-
如何汇编程序链接 - 如果您安装了Developer工具,则可以使用GCC和相关工具
-
如何与操作系统对话 - 这里的Mac程序集 lot 比Windows或Linux记录更少。您可能需要编写等效的C程序并使用'gcc -S'来查看哪些调用/堆栈恢复约定是合适的。这取决于你想要做什么,但在最低限度你需要OS系统调用IO和内存分配。
醇>
一个很好的起点是这里
如果您安装了开发人员工具,则只需打开终端并输入为( GNU汇编程序 - Binutils 的一部分。)
对于PPC尝试Lightsoft