在iphone上编写ARM汇编代码的工作流程

Joe*_*tti 14 iphone assembly arm

我想开始编写ARM汇编程序并在iPhone上运行它.

这不是为了在应用程序中使用发布到应用程序商店 - 基本上我想使用ARM和iPhone 解决ProjectEuler上的问题,仅用于业余爱好和教育目的.

我该怎么做呢?我无法想出一个方法让一个项目使用任何手写的手臂运行.

She*_*ami 9

我还没有找到任何关于如何专门为iPhone编写汇编代码的信息,但是像其他人在这里说的那样,你可以:

1)在C/C++/ObjC代码中编写内联asm语句,或2)在'.s'文件中编写独立的汇编函数,只需将其添加到XCode源代码中,或者3)为外部汇编程序编写独立的汇编函数,如NASM.您在'.s'文件中编写汇编代码,并使用NASM生成'.o'对象文件,并将对象文件与您在XCode中的项目链接.

因此,如果您只是尝试编写一些汇编指令,那么内联汇编程序将是最简单的方法,但如果您计划编写多个汇编函数,那么我建议使用独立的汇编文件.如果您计划使用宏编写许多汇编函数并希望跨平台兼容性等,那么我建议使用NASM将汇编代码编译为目标文件.因为我使用的是XCode gcc汇编程序,与NASM相比它非常缺乏.你可以在http://www.nasm.us/免费获得NASM

设置汇编程序环境后,需要学习如何编写ARM程序集代码!因为iPhone(以及许多其他便携式设备和智能手机)使用ARM指令集.在http://www.coranac.com/tonc/text/asm.htm上有一个非常好但很老的ARM组装介绍.

在汇编编程方面,官方指令集参考手册通常是您要编写的所有内容的主要信息来源,因此您应该访问ARM网站并下载ARM和Thumb-2快速参考卡(6页长)以及确切CPU的2个完整文档.

例如,iPhone 3GS和iPhone 4都有一个ARMv7-A Cortex-A8 CPU,因此您可以下载ARM体系结构参考手册ARMv7-A和ARMv7-R版本(2000页长),它可以准确地告诉您哪些指令可用以及它们的工作方式,以及Cortex™-A8技术参考手册,它解释了特定CPU的指令时序等.


Far*_*ler 6

您可以使用gcc进行内联汇编用__asm__,或者只是得到一个GNU as,并在不同的文件编写代码.稍后将它们链接到您的项目应该没有问题,但我建议您使用c/Objective-C代码来包装您的asm存根,因为在汇编程序中编写整个iPhone应用程序有点困难(您需要在ObjC运行时内部非常好).

您可能对使用自定义Makefile感兴趣,但Xcode项目也应该足以满足大多数的需求.

  • iPhone开发工具包括一个汇编程序,无需外出并单独购买.您可以在XCode项目中包含.s文件,它将"正常工作". (3认同)