iOS汇编代码

7

我想尝试一些ARM汇编代码,以了解IT技术的相关知识,希望能在Xcode中使用内联代码开始。 我的理解是需要为iOS设备编译,例如我的iPhone,这意味着我需要支付99美元/年的会员费。 我认为我不能在iOS手机模拟器中使用ASM汇编代码。 我很难在Xcode环境中找到关于在iPhone上使用ARM汇编代码的示例、书籍或文档。 我做错了吗?也许iOS不是学习ARM汇编最友好的环境。


1
这是一些关于iOS汇编程序编写的链接集合(http://www.shervinemami.info/armAssembly.html),供参考。我认为这样做的价值除了教育和娱乐之外,实际上并不高。 - Sergey Kalinichenko
编写iOS/ARM汇编代码需要一台iOS设备和计划的会员身份。要开始,可能只需阅读编译器生成的ARM代码,参见http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios - Tammo Freese
1
我的博客文章关于iOS下ARM汇编的时间控制提供了许多有用的链接和一个示例Xcode项目,其中包括附加到Xcode项目的.s文件:http://www.modejong.com/blog/post10_arm_timing_framework/index.html - MoDJ
4个回答

14

备份...

你想学习什么? Arm汇编还是iOS编程?选择一个...

你有任何汇编经验吗?

你认为你想在Arm汇编中学到什么?尝试编写一些完整的GUI应用程序吗?你需要学习将立即数放入寄存器中,添加和或和异或并将答案保存在寄存器中。然后读取和写入一些内存位置。学习使用堆栈,进行调用等。然后使用C或其他语言编写您的应用程序,并使用汇编进行手动优化,或使用您的汇编技能来调试编译器或代码。在汇编中编写应用程序或操作系统等是为那些想要表达观点或有特定原因的人而设计的,而不是出于教育目的。

有一些倾向于统一ARM汇编语言,可同时在基于ARM的核心和基于thumb2的核心上工作。虽然不是所有所需的汇编语言,但对于您可能想要编写一个模块的代码而不必在代码中大量使用if thumb elses的地方非常有用。您可以在这里开始涉足并将其中一些代码直接传递到其他平台上的完整32位ARM指令。thumbulator仅支持Thumb,基于ARM的核心和基于thumb2的核心之间的通用指令集,基本上是可移植的ARM指令集,编写一次代码,它适用于几乎所有他们的核心。

如果您的目标是学习iOS编程,请获取适当的工具包并使用他们想让您学习的任何语言进行学习,在该领域达到熟练水平,学习API等。然后,如果您完成了上述汇编语言的一些内容,那么您可以开始考虑从iOS程序中调用汇编器函数或内联汇编器等。使用多少汇编,由您决定。我不会期望在该平台上看到使用汇编器编写的应用程序,而是搜索如何从我的iOS应用程序中调用此汇编代码或如何进行内联汇编。(在掌握实际汇编之前不要学习内联汇编)。

完全没有理由花钱获取模拟器的访问,市面上有很多ARM模拟器,其中一个是在MAME中,Arms Armulator在GDB和其他地方也能找到,还有一些Gameboy Advance和Nintendo DS模拟器等等。当然还有QEMU-ARM。这里的模拟器数量可能比您愿意尝试的要多得多,我自己已经进入了大约10年左右,并没有尝试过所有的模拟器。

学习汇编语言不像C、Python或Java那样,我将编写扫雷游戏来学习这种语言。你要学习的是如何移动位,是小步慢走,而不是编写可用的应用程序。例如,使用16位处理器添加两个128位数字是一个值得做的汇编语言项目。使用没有乘法指令的处理器进行任何大小的两数相乘,那就是另一个汇编器类型的学习项目。是的,我同意您可以通过从iOS应用程序调用汇编语言来学习这些知识,但如果您还没有iOS开发人员工具包并且不知道如何编写iOS应用程序,那么在考虑汇编器之前,您需要学习很多东西。

如果我的回答与您的问题不符,没问题,我会很乐意删除这个回答...


3
原问题询问如何在iOS中编写汇编语言,而不是询问使用汇编语言学习iOS编程是否可行。我认为我们身为有经验的技术专业人士,在Stackoverflow上的职责不是去质疑某个做事的原因,而只是帮助提问者达成他所要求的目标。请阅读原问题和答案后再进行翻译。 - Tomm P
Tomm P:说得好!(50年以上的编码人员) - Doug Null
35年以上的编程经验者。“也许iOS不是学习ARM汇编最友好的环境。”我认为我的答案很准确。请再次阅读问题。 - old_timer

2
即使没有代码签名证书,我认为你应该能够转到方案弹出菜单(右侧),然后选择“iOS设备”。一旦你这样做了,就可以在项目中选择任何.c或.m(或.cpp或.mm)文件,打开助手编辑器,并从助手编辑器跳转栏中选择“汇编”。然后你就可以看到你的源代码和汇编代码并排显示。
或者你可以直接进入“产品”菜单,生成输出 -> 汇编。
在C代码中开始可能会更容易,其中函数调用最初将比Objective-C方法调用更容易跟踪。

1

你提供了我所需要的,谢谢伙计。 - krachleur

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

1
那怎样帮他将任何代码以二进制形式在 iPhone 上运行呢? - Strelok
2
它并不是必需的,但如果他想编写和调试ARM汇编代码,使用适当的ARM开发套件会让他走得更远。而且,如果他不喜欢它,他可以转售它,这是iOS开发者会员所不能做到的。 - Jacek
如果他还不是iOS开发者,那就不要从这个平台开始。我同意Jacek的观点。 - old_timer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接