2011-12-07 76 views
6

我想尝试一些ARM汇编代码与苹果iOS仅用于教育目的。我想从Xcode中的一些在线代码开始。 我的理解是,我需要编译iOS设备,例如我的iPhone,这意味着我需要支付99美元/年的会员资格。 我不认为我可以在iOS手机模拟器上使用ASM汇编代码。 我很难在Xcode env中使用iPhone查找有关ARM汇编代码的示例,书籍或文档。 我做错了吗?也许iOS不是学习ARM组件的用户最友好的环境。iOS汇编代码

+1

FWIW,这里是一个编写汇编程序的iOS [链接集](http://www.shervinemami.info/armAssembly.html)。我非常怀疑这个练习的价值,除了教育和娱乐之外。 – dasblinkenlight

+0

为iOS/ARM编写汇编代码需要iOS设备和程序中的成员资格。要开始使用,它可能足以读取由编译器生成的ARM代码,请参阅http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios –

+1

我在iOS下的ARM汇编的时机博客中提供了一些有用的链接和包含连接到Xcode项目.S文件的示例Xcode项目:http://www.modejong.com/blog/post10_arm_timing_framework/index.html – MoDJ

回答

1

您需要的是带有基于Linux的编程工具包的ARM开发工具包。然后,您可以在Mac上安装VirtualBox,创建Linux虚拟机并在虚拟Linux机器上安装ARM开发工具。确保购买ARM开发套件时,它配备了ARM cpu,完整的开发/测试板,用于软件传输/调试的USB电缆以及完整的Linux工具链。你可以找到这样的套件少于99美元。

+1

如何这是否帮助他将他的任何代码作为二进制文件运行在他的iPhone上? – Strelok

+2

它并没有,但是如果他想编写和调试ARM汇编代码,他将会使用适当的ARM开发工具包进行更进一步的工作。如果他不喜欢它,他可以转售它,不像他的iOS开发者会员资格。 – Jacek

+0

如果他还不是已经不是开始的平台的iOs开发人员。我同意Jacek。 –

2

即使没有代码签名证书,我想你应该能够去计划弹出菜单(它的右侧),然后选择“iOS设备”

一旦你这样做,那么你可以选择项目中的任何.c或.m(或.cpp或.mm)文件,打开助理编辑器,然后从助理编辑器跳线栏中选择“组装”。然后你可以并排看到你的源代码和汇编代码。

或者你也可以转至产品菜单,并生成输出 - >组装

您可能会发现更容易下手的C代码,在函数调用会更容易最初跟随比Objective-C的方法调用。

11

备份...

你想学什么?手臂组装或iOS编程?选择一个...

您是否有任何组装经验?

你认为你想在臂组装中学习什么?跳入并编写一些完整的gui应用程序?您需要学习将注册表添加到寄存器add和or和xor中,并将答案保存在寄存器中。然后读取和写入一些内存位置。学习使用堆栈,进行调用等。然后用C或其他方式编写应用程序,并使用asm进行手动调优或使用您的asm技能来调试编译器和/或代码。在asm中编写应用程序或操作系统等是为了想要发表声明或有特定原因的人,而不是为了教育目的。

给这几分钟或半小时,它不应该花很长时间才能通过,也许一个晚上,如果你认真对待它。

http://github.com/dwelch67/lsasim 看看learnasm.txt文件。

它是免费的,开放源代码,应该用C编译器工作大多数地方(如linux,unix,windows等),如果你不是程序员并且没有基本的编译器工具或编程技能,那么去学习几种语言(当然,请查看Python的难题http://learnpythonthehardway.org/),然后回到汇编程序上。上面提到的事情并不是一个ARM,但是有很多熟悉的功能。让我知道我做过的工作有多好或多坏。

现在,这是ARM但Thumb指令集:

https://github.com/dwelch67/thumbulator

不是一个教程,但一个普通的,简单的,指令集仿真器。应该很明显的是模拟器中发生了什么,您可以添加/修改/打印您想要查看的任何帮助进行调试的内容。您可以使用gcc,gnu汇编程序和/或llvm clang作为交叉编译器,使用嵌入式,拇指,cortex-m,ARM寄存器等方式让自己的脚变得湿润。按照其中一个例子,然后开始修改它。

有一些倾向于统一的ARM汇编语言,可以在基于ARM的内核和基于thumb2的内核上工作。不是所有需要的汇编语言,而是你可能想要编写一个代码模块的地方,而不需要大量的代码丢失。你当然可以在这里弄个脚步,并在某些其他平台上直接将这些代码直接写入完整的32位ARM指令。 thumbulator只是拇指,基于ARM的内核和基于thumb2的内核之间的通用指令集,基本上就是便携式ARM指令集,只需编写一次代码,它几乎可以在所有内核上运行。

你会在github上看到我有许多其他项目,样本以汇编开始,然后进入引导代码进入C语言。许多但不是全部基于ARM。硬件成本从10美元到50美元左右。例如,你可以看看yagbat的东西,并获得免费的视觉男孩提前模拟器和模拟32位手臂指令或16位拇指或任何,并有一个模拟显示,等等。或者,如果你有gameboy硬件或nds或nds lite和正确的墨盒,您可以在真正的硬件上运行程序。

我把那里的东西放在那里供人们学习。克服对第一次嵌入事物的恐惧,不知道如何交叉编译等。我从其他许多类似的例子中学到了很多东西,我只是回复了它的喜好。

如果您的目标是学习iOS编程,那么请购买套件或其他软件,并使用您希望学习的任何语言学习,熟练掌握,学习apis等。然后,如果您执行上面的某些汇编程序那么你可以开始考虑从iOS程序调用asm函数或内联汇编程序等。多少汇编程序,您的选择。我不希望看到用该平台的汇编程序编写的应用程序,而是寻找如何从我的ios应用程序调用此汇编代码,或者如何执行内联汇编。 (不要学习内联汇编,直到你擅长真正的汇编)。

没有任何理由支付访问模拟器,有许多手臂模拟器在那里,一个在mame中,在gdb和其他地方的arm armulator,一些gameboy advance和任天堂ds simultators等等等,等等。当然有qemu手臂。还有更多的模拟器可能比你愿意花时间去尝试,我自己大约10年左右,而不是全部尝试。

学习程序集不像C或python或java,我会写一个扫雷游戏来学习这种语言。你正在学习移动位的机制,小步骤,而不是编写可用的应用程序。例如,使用16位处理器添加两个128位数是一个有价值的汇编语言项目。将两个数字(任意大小)乘以一个没有乘法指令的处理器,这是另一个汇编器类型学习项目。是的,我同意你可以通过从iOS应用程序调用asm来学习这些东西,但是如果你还没有iOS开发工具包,并且知道如何编写iOS应用程序,那么在开始考虑汇编程序之前,你有很多学习要做。

如果我的方式与你问的问题没有问题,我会很乐意删除这个答案...