【问题标题】:iOS assembly codeiOS 汇编代码
【发布时间】:2012-01-15 11:04:27
【问题描述】:

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

【问题讨论】:

标签: ios assembly arm


【解决方案1】:

备份...

你想学什么? Arm 组装还是 iOS 编程?选一个……

你有组装经验吗?

你认为你想在手臂组装中学习什么?加入并编写一些完整的 gui 应用程序?您需要学习将立即数放入寄存器中添加和或和异或并将答案保存在寄存器中。然后读写一些内存位置。学习使用堆栈、进行调用等。然后用 C 或其他语言编写应用程序,并使用 asm 进行手动调整或使用您的 asm 技能来调试编译器和/或代码。在 asm 中编写应用程序或操作系统等是为那些想要发表声明或有特定原因的人准备的,而不是出于教育目的。

有些人倾向于在基于 ARM 的内核和基于 thumb2 的内核上使用统一的 ARM 汇编语言。不是针对所有需要的汇编语言,而是针对您可能想要编写代码模块并且不必有很多 if thumb else 乱扔代码的地方。您当然可以在这里开始涉足,并将其中的一些代码直接用于其他平台上的完整 32 位 ARM 指令。 thumbulator 是thumb only,是ARM核心和thumb2核心之间的通用指令集,基本上是可移植的ARM指令集,一次编写代码,几乎可以在他们所有的核心上运行。

如果您的目标是学习 iOS 编程,获得工具包或其他任何东西,并使用他们希望您学习的任何语言学习,精通该语言,学习 api 等。然后,如果您执行上面的一些汇编程序,那么您可以开始考虑从您的 iOS 程序调用 asm 函数或内联汇编程序等。多少汇编,你的选择。我不希望看到为该平台用汇编程序编写的应用程序,而是搜索如何从我的 ios 应用程序中调用此汇编代码或如何进行内联汇编。 (在你擅长真正的汇编之前不要学习内联汇编)。

完全没有理由为访问模拟器付费,那里有很多arm模拟器,一个在mame,gdb和其他地方的armulator,一些gameboy Advance和nintendo ds模拟器等等,等等等等。当然还有qemu-arm。模拟器的数量可能比您愿意花时间尝试的要多,我自己已经投入了大约 10 年左右的时间,并没有全部尝试过。

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

如果我与您的要求不符,没问题,我很乐意删除此答案...

【讨论】:

  • 请阅读原始问题并回答。最初的问题是在 iOS 中编写汇编程序需要什么,而不是编写汇编程序是否是学习 iOS 编程的好方法。我相信我们作为 Stackoverflow 上经验丰富的技术专家的位置不是挑战做某事的原因,而只是帮助 OP 实现他的要求。
【解决方案2】:

即使没有代码签名证书,我认为您应该能够转到方案弹出菜单(右侧)并选择“iOS设备”

完成此操作后,您可以在项目中选择任何 .c 或 .m(或 .cpp 或 .mm)文件,打开助手编辑器,然后从助手编辑器跳转栏中选择“Assembly”。然后你可以并排看到你的源代码和汇编代码。

或者您可以直接进入产品菜单并生成输出 -> 程序集

您可能会发现从 C 代码开始更容易,其中函数调用一开始会比 Objective-C 方法调用容易得多。

【讨论】:

    【解决方案3】:

    您需要的是带有基于 Linux 的编程工具包的 ARM 开发工具包。然后,您可以在 Mac 上安装 VirtualBox,创建 Linux 虚拟机并在虚拟 Linux 机器上安装 ARM 开发工具。确保当您购买 ARM 开发套件时,它随附 ARM cpu、完整的开发/测试板、用于软件传输/调试的 USB 电缆和完整的 Linux 工具链。您可以以不到 99 美元的价格找到此类套件。

    【讨论】:

    • 这如何帮助他在 iPhone 上将任何代码作为二进制文件运行?
    • 它没有,但如果他想编写和调试 ARM 汇编代码,他将使用适当的 ARM 开发套件走得更远。如果他不喜欢它,他可以像他的 iOS 开发者会员资格那样转售它。
    • 如果他还不是一个 iOs 开发者,那不是开始的平台。我同意 Jacek 的观点。
    【解决方案4】:

    另一个关于 ARM 汇编和逆向工程的快速介绍:http://yurichev.com/writings/RE_for_beginners-en.pdf

    【讨论】:

    • 你给了我想要的东西,谢谢老兄
    猜你喜欢
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2017-07-26
    相关资源
    最近更新 更多