Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在哪里可以找到学习OSX上汇编程序的工具?_Macos_Assembly - Fatal编程技术网

Macos 在哪里可以找到学习OSX上汇编程序的工具?

Macos 在哪里可以找到学习OSX上汇编程序的工具?,macos,assembly,Macos,Assembly,我想学汇编语言。然而,使用OSX进行汇编的资源很少 有没有人在Mac上进行过汇编编程?你在哪里学的 还有,有什么理由我不应该做装配吗?我是否有可能(显著地)使我的计算机无法修复地崩溃?你没有理由不这样做;在汇编语言中,没有什么是在更高级的语言(如C)中做不到的 就工具而言,您可能希望安装并获得GNU汇编程序。这可能是最简单的方法,也可能不是,但它是免费的,您可能可以在网上的某个地方找到用GNU汇编程序编写Unix程序的教程文档。XCode(即GCC)非常支持编写汇编程序。这是一件很有趣的事情(尽

我想学汇编语言。然而,使用OSX进行汇编的资源很少

有没有人在Mac上进行过汇编编程?你在哪里学的


还有,有什么理由我不应该做装配吗?我是否有可能(显著地)使我的计算机无法修复地崩溃?

你没有理由不这样做;在汇编语言中,没有什么是在更高级的语言(如C)中做不到的

就工具而言,您可能希望安装并获得GNU汇编程序。这可能是最简单的方法,也可能不是,但它是免费的,您可能可以在网上的某个地方找到用GNU汇编程序编写Unix程序的教程文档。

XCode(即GCC)非常支持编写汇编程序。这是一件很有趣的事情(尽管你不太需要它),最糟糕的情况是你正在编写的程序崩溃,就像在C语言中一样。只要在谷歌上搜索“gcc内联asm x86教程”,你就会找到很多起点。不要担心有些可能是特定于Linux的,它们在XCode中也能正常工作


(编辑)…当然,假设你有一台英特尔Mac电脑;如果没有,则将“x86”替换为“ppc”。

如果您使用的是PowerPC Mac,请查看gcc内联汇编程序。否则,请查看nasm。我不能给出任何关于PPC ASM的适当参考(它们很少,而且相差很远),但我建议学习x86 ASM的以下内容:

  • 使用gcc-S编译简单C源代码并读取生成的程序集
  • 使用
  • 在irc.freenode.net上加入#openrce并使用
而且,如果你没有处于内核模式,那么就不可能把任何事情搞砸,真的,即使你处于内核模式,也很难真正销毁任何东西


编辑:另外,从XCode而不是Macports之类的地方获取gcc之类的东西。如果你不这样做的话,你将面临一个格式错误的Mach-O文件的世界。当你刚刚开始asm黑客攻击时,诊断文件格式问题并不有趣。

Nasm/yasm是你最好的选择;gcc内联语法非常糟糕,有时使用起来会非常痛苦,另外还有一些事情它确实做不到。Nasm的宏语法也有用得多,它是一种类似汇编的语言,没有内置模板功能。

汇编语言由硬件平台而不是操作系统决定。鉴于OSX在英特尔平台上运行,并且是64位的,您应该查找有关x64(也称为AMD64)汇编程序的信息。查看Wikipedia文章()中有关x64文档的大量链接

另外,OSX工具文档可能包含大量关于x64汇编程序的信息。特别是,Netwide Assembler(NASM-)可能有关于如何使用Assembler构建OS X应用程序的文档。

我在Mac电脑上编程组装。这是摩托罗拉680x0汇编使用MPW。在CodeWarrior和ProjectBuilder中,我曾多次接触PowerPC汇编程序。现在ProjectBuilder被称为XCode,还有Intel。汇编程序是XCode中众多工具之一

我最初是在Apple II上学习汇编程序的:内置于ROM中的6502机器语言监视器、Sweet16迷你汇编程序以及其他。后来,我用英特尔80186汇编程序来加速C代码的慢段,并在一所大学学习了一天的英特尔80186汇编程序课程。后来,我不得不为Mac维护一些680x0组件。那是很久以前的事了

我认为没有任何理由不做装配。学习是伟大的。尽你所能学习。进入足够低级别的调试器,查看反汇编代码

我的建议是:

别害怕


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

gcc -S hello.c -o hello.asm

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

在带有操作系统的系统上编写汇编语言需要了解两件事(与“裸机”汇编相反,裸机汇编本身就是一个世界):

  • 指令集的工作原理-如果您有Intel Mac,则为Intel X86加载大量资源,例如,对于PPC来说,仍然是合理的设置

  • 如何组合链接您的程序-如果您安装了开发人员工具,您就有GCC和相关工具

  • 如何与操作系统对话——在这里,Mac汇编的文档记录要比Windows或Linux少得多。您可能需要编写等效的C程序,并使用“gcc-S”来查看哪些调用/堆栈恢复约定是合适的。这取决于你想做什么,但至少你需要操作系统调用IO和内存分配


  • 一个很好的起点是。

    如果您已经安装了开发工具,只需打开终端并键入(-Binutils的一部分)。

    对于PPC,请尝试Lightsoft

    在学习x86 ASM之前学习x86-64 ASM就像在学习第一个单词之前写一首史诗。里面有太多的东西会绊倒新人。绝对不推荐。编写64位OSX应用程序需要付出努力;默认为32位。当然,我不是Mac开发者。然而,OSX是64位的,并且声称Xcode 3.0支持构建64位应用程序,所以这不只是开发人员的选择吗?当然知道自己在做什么,但这同样适用于构建32位应用程序。使用NASM存在一些问题,即使是在32位模式下使用Apple docs。NASM的-f macho选项和gcc的-arch i386(用于链接)使一些错误消失。对于链接来说,似乎很有希望。该网站不再提供PPC软件。