在Mac上进行汇编编程

时间:2010-04-16 22:47:49

标签: macos assembly

我在使用Snow Leopard的Mac上(10.6.3)。我听说我使用的汇编语言必须与您使用的芯片组一致。我是全新的,我有C和Objective-C编程的基本背景和PHP的几乎强大的背景。我一直想看看装配是什么。

我将要看的教程是VTC [link]

我想知道的是:我将要与Mac上的汇编版本兼容吗?

我对这种语言完全陌生,尽管我记得回忆起当时的一些方式。我有Xcode和我想知道的是我将在Xcode中打开什么样的文档来处理汇编并且Mac是否有内置的十六进制编辑器(当需要它时)?

5 个答案:

答案 0 :(得分:5)

您使用的汇编语言不依赖于您的操作系统,而是您的CPU指令集。从您的Mac版本来看,我会说您使用的是英特尔处理器 - 因此您需要学习x86或amd64程序集。

答案 1 :(得分:1)

选择组装的一个好方法是让自己成为一个嵌入式设备。

TI有一些nice, inexpensive devkits可以使用。我已经开始使用Chronos套件(50美元),它配有带可编程MSP430微控制器的数字手表,并带有与计算机的无线连接。这很甜蜜。

更新:我忘了提及Arduino。这是一个非常漂亮的开放平台,有大量有趣的外围设备和在线项目。

答案 2 :(得分:0)

汇编语言是特定于指令体系结构的。芯片是指令架构的实例。

在我看来,最好通过获取TextWrangler并直接使用gcc进行编译。

您要查找的文件扩展名为.s

答案 3 :(得分:0)

对于任何处理器,程序集在概念上或多或少都是相同的。但是,复杂度因处理器而异。从我在你的网站上看到的,你将做的是x86汇编程序,(x86是所有消费者线上的英特尔处理器使用的指令集,最近的Mac和所有PC使用的),这可能会变得相当复杂,但不是压倒性的如果你通过步骤学习。

我认为XCode适用于纯文本文件。 Hex Fiend可以满足您的十六进制编辑需求。

请记住,Assembly 极低级别。没有ifs,whiles,或实际上任何控制循环保存为“do operation和GOTO if results in(not)zero / equal”(除非你的汇编程序提供它们作为语法糖,在我看来哪种打击目的)。 PHP知识最多可能非常有用。不过,你的C知识应该对你很好。

答案 4 :(得分:0)

链接教程看起来像是使用MacM附带的NASM。但是,系统调用在不同的平台上通常是不同的(它们在Mac和Linux之间是非常不同的),并且没有看到教程,很难知道它们是否会针对不同的平台(我猜不会)。更好的选择可能是安装SPIM并学习MIPS程序集,这比x86更直接。