如何在 XCode 中使用 ARM 汇编器?

2023-11-22

出于教育目的,我想向现有的 iPhone 应用程序添加一个用 ARM 汇编语言编写的函数。一般来说,我不需要 ARM 汇编教程,因为我已经读了太多了。我只是不知道如何实际运行代码!

我想做的是这样的:

无用.h:

void useless();

无用.s:

useless:
      bx lr

如果这也适用于模拟器,那就太好了...在模拟器上,.s 文件将无法编译,所以我也许应该这样做:

无用.s:

#if I_AM_ARM
useless:
      bx lr
#endif

无用.c:

#if !I_AM_ARM
void useless()
{
}
#endif

我知道我使用的语法已损坏,但如何正确编写它? (仅仅因为我想尝试一些内联汇编就破坏模拟器上的应用程序是不可能的......)

第二好的选择是使用内联汇编,但我强烈喜欢非内联汇编。

Thanks!

编辑:我想学习ARM汇编,所以我想找到一种方法来编译ARM汇编代码,并执行ARM汇编代码。


我终于自己找到了答案。其实没那么难。不过我只解决了 32 位 ARM 版本的问题。

无用.h:

void useless();

无用.s:

#ifdef __arm__


    .syntax        unified
    .globl         _useless
    .align         2
    .code          16
    .thumb_func    _useless

_useless:
    //.cfi_startproc
    bx    lr
    //.cfi_endproc

// CFI means Call Frame Information
// Optionally. Use for better debug-ability.


#endif

无用.c:

#ifndef __arm__

void useless()
{
}

#endif

Notes:

CLANG ARM 汇编器语法与您在网络上的示例中看到的有点不同。评论开头为// and /* multiline comments */也得到支持。它还理解标准 C 预处理器。如果您指定了arm函数(.code 32)程序就会崩溃。线路.thumb_func _useless可以省略,它仍然有效。我不知道这意味着什么。如果您省略.code 16行,程序崩溃。

有关#ifdef。对于 ARMv7,__arm__被定义为。对于 ARMv8,即 iPhone 5S 上的 64 位变体,__arm__没有定义,但是__arm64__而是被定义。上述代码不适用于 64 位 ARM 版本。相反,实施来自useless.c将会被使用。 (我没有忘记ARMv7,只是我目前手中没有带有该拱门的设备,所以我无法测试。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 XCode 中使用 ARM 汇编器? 的相关文章

  • Swift 和 Objective-C 框架公开其内部结构

    我正在尝试将 Swift 添加到具有公共 私有和项目文件的现有 Objective C 框架中 为了让 Swift 能够访问项目文件 我添加了一个定义新模块的模块映射 例如MyFramework Internal 通过包含所有项目标题 如下
  • UICollectionView 项目顺序在从右到左语言中不颠倒

    我注意到一个大问题 在从右到左的语言中 单元格顺序没有正确颠倒 只有对齐是正确的 但仅适用于水平流布局 并且如果集合视图包含不同的细胞大小 是的 我知道这听起来很疯狂 如果所有单元格大小相同 则排序和对齐就很好 这是到目前为止我通过示例应用
  • 将 32 位值加载到 Arm 汇编中的寄存器中

    我想使用arm汇编将1个32位十六进制直接加载到寄存器中 mov r1 0x6c617669 这不能使用 因为从该指令我们只能加载 8 位值 所以我直接从内存加载32位值 那么如何将32位值存储在内存中并使用arm汇编将其直接加载到寄存器中
  • 由于无法确认开发者身份而无法打开

    我在 Mac OSX 中开发了一个应用程序和守护进程 并且我已经在 xcode 中与开发者 ID 签署了应用程序和守护进程源代码 在守护进程中 我已经对每个框架进行了签名并打包 并且我使用软件包安装程序对所有框架进行了 pkg 现在我的应用
  • 平板电脑在第一次单击时悬停,在第二次单击时单击

    发布这个问题主要是希望证实我对该行为的怀疑 从而为其他程序员记录下来 因为我在网上没有找到任何记录 我正在构建一个网站 其导航栏具有以下属性 水平截面是 ul of li 和一些 li li s 两者都有 A n a 元素带您进入该主题 触
  • 使用 Swift 更改整个应用程序中的 UILabel 文本颜色

    在 Swift 中有什么方法可以在整个应用程序中立即更改 UILabel 的文本颜色属性吗 我尝试过使用外观属性 但这不适用于 UILabel textColor 任何方式或任何同样工作的库 一种方法是使用颜色设置 首先在您的 xcasse
  • ARM(特别是移动)外设寻址和总线架构的解释?

    我首先要说的是 我不是该领域的专家 我的问题可能包含误解 在这种情况下 如果您纠正我并附上资源 以便我可以了解更多详细信息 我将很高兴 我试图弄清楚系统总线的方式以及移动设备中出现的各种设备 例如传感器芯片 wifi BT SoC 触摸屏等
  • iOS 新手。预期的表达错误?

    这看起来很不寻常 因为该方法与我的 showAnswer 方法完全相同 所以我想我应该在这里问 import QuizViewController h interface QuizViewController end implementat
  • Xcode 6.3 Parse SDK 1.7.1 PFTableViewCell 错误“具有不兼容的类型”

    My code override func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath object PFObject gt PFT
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • iPhone / iPad IOS 应用程序仪器内存计数与 task_info 内存计数

    我一直在使用 Instruments Leak Tester 它给出了大约 1 3 meg 的应用程序总分配数字 但是 当使用 task info 时 它会报告更大的内存量 例如 10 20 meg 我想我只是想确认task info正在返
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的
  • 为什么 iOS 5.0 不喜欢纯窗口应用程序?为什么它要求使用视图控制器?

    我有一个使用 Xcode 4 0 的 基于窗口的应用程序 模板创建的 iOS 应用程序 当时运行良好 并且使用的是 iOS 4 3 SDK 这是一个简单地将按钮 标签等直接放置到窗口上的应用程序 没有视图控制器 什么都没有 但现在我已经升级
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • Apple Mach-O 链接器错误 armv7s 和 libGoogleAdMobAds.a

    我刚刚升级了我的应用程序以在新的 iPhone5 模拟器上运行 但是当我尝试为我的 iPhone 4S 设备构建它时 我收到此 Apple Mach O Liner 错误 ld 文件是通用的 3片 但不包含 n armv7s 切片 User
  • UINavigationController 在后退按钮单击时向下滚动

    我正在开发一个带有多个导航控制器的 iPhone iPad 应用程序 当我在设备处于横向模式时单击视图的后退按钮时 前一个视图会垂直滚动到屏幕中 而不是像往常一样水平滚动 推送动画始终水平工作 正如它应该的那样 是什么导致了这个奇怪的问题
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • 如何在 XCode5 中将部署目标更改为 5.1.1 [重复]

    这个问题在这里已经有答案了 我正在一个项目中工作 我需要支持 iOS 5 1 1 但在 部署目标 的下拉菜单中我没有 5 1 1 作为选项 我的问题是如何将 iOS 5 1 1 添加为部署目标 我将非常感谢你的帮助 如果您愿意 您可以在框中

随机推荐

  • Visual Studio 2015 无法与 Apache Cordova 工具一起使用

    我完整安装了 VS 2015 Enterprise Tools for Apache Cordova 当我打开或创建任何项目时 它不会构建 甚至不会在 运行 按钮上显示 Ripple 模拟器或设备信息 我已经完全重新安装了 但还是一样 当我
  • 使用网络音频 api 播放简单的声音

    我一直在尝试按照一些教程中的步骤使用按钮通过网络音频 API 播放简单的编码本地 wav 或 mp3 文件 我的代码如下 testAudioAPI js window AudioContext window AudioContext win
  • 关于何时应该将直接缓冲区与 Java NIO 一起用于网络 I/O 的简单规则?

    具有以简单直接的方式解释复杂事物的天赋的人可以解决这个问题吗 使用 Java NIO 进行网络 I O 时 为了获得最佳性能 何时应使用直接 ByteBuffer 与常规 ByteBuffer 例如 我应该读入堆缓冲区并从那里解析它 执行多
  • Postgres:找不到适用于 jdbc 的驱动程序

    我知道这可能与此处发布的问题重复 抱歉 这是我为数据库连接编写的代码 try Class forName org postgresql Driver catch ClassNotFoundException e e printStackTr
  • 如何在 numpy 和 R 之间传递大型数组?

    我正在使用 python 和 numpy scipy 为文本处理应用程序执行正则表达式和词干提取 但我也想使用 R 的一些统计包 将数据从 python 传递到 R 的最佳方法是什么 然后回来 另外 我需要在某个时候将数组备份到磁盘 所以如
  • 有没有办法让SCNNode总是在其他节点前面?

    我一直在尝试使用场景套件制作一个场景 其中指定的对象始终位于其他对象的前面 尽管事实上它实际上位于其他对象的后面 与此类似的效果用于blender 显然 搅拌机使用 GUI 和大量数学来转换 2D 对象 但我需要在具有 SCNGeometr
  • 如何在 Rails 应用程序中运行 rake 任务

    我想做的事 在 model rb 中 在 after commit 中 我想运行 rake 任务 ts reindex ts reindex 通常与 rake 一起运行 ts index 如果您希望此 rake 代码在请求周期内运行 那么您
  • 如何从 Chrome 扩展程序打开 mailto: 链接?

    我有一个名为 URL 缩短 的 Chrome 扩展程序Shrtr 目前 它允许用户将缩短的 URL 复制到剪贴板 但在下一个版本中 我添加了使用电子邮件发送缩短的 URL 的功能mailto 链接 即mailto subject
  • Django 添加占位符到 django 内置登录表单

    我正在使用 django 内置登录forms我想在用户名和密码中添加占位符 我的模板 div class form group div class col md 12 form username add class form control
  • Android Market - 上传 APK 文件时出错

    刚才我已经开发了一个应用程序 现在我准备将其上传到Android市场 但是当我尝试上传时 它显示以下错误消息 市场不接受使用调试证书签名的 apk 创建有效期至少 50 年的新证书 Market 要求用于签署 apk 的证书至少在 2033
  • 序列化 .net 对象并省略文档类型?

    我编写了一些 net 代码来使用 XMLSerializer 类序列化对象 public static string serialize object o Type type o GetType System Xml Serializati
  • Jquery - 不可滚动 div 上的滚动事件

    example http jsbin com ofiy 2 edit preview 我尝试用不可滚动的div 绿色的 滚动一个div 红色的 我的问题是 当我在绿色 div 上滚动时 jqueryscroll 不着火 HTML div s
  • 当 rpm 文件中存在用于 rpm 安装的“缺少”lib 时

    我正在为 centos 生成一个 rpm 文件 但是当我尝试在干净的机器上安装它时 它失败了 gt Running transaction check gt Package grass x86 64 0 6 4 4 1 el6 will b
  • Facebook 登录无法在 Safari/ iPhone 中打开

    我正在创建一个显示 Facebook 好友的应用程序 首先 用户需要单击登录按钮 然后在填写登录 ID 和密码后会出现一个简单的弹出屏幕 其中将显示好友列表 一切正常 可以在 Firefox Chrome IE 上运行 但不会在 Safar
  • Apache POI - 使用 XSSFWorkbok + servlet 响应

    我的 java 应用程序在启用下载 XLSX 文件时遇到问题 按照此链接中显示的示例 使用 Apache POI 创建 excel 文件供用户下载 我尝试了两种配置来下载 保存电子表格 首先使用 XLS 文件 response setCon
  • Java/JavaScript 日期:这是真的吗?

    假设用户在与应用程序服务器不同的时区通过浏览器运行我的 Web 应用程序 我使用 JavaScript 在客户端序列化日期date getTime 方法 我通过 Json 发送结果毫秒 然后通过调用在服务器端创建一个 Java Date 对
  • UITextField - 仅允许数字和标点输入/键盘

    我已经尝试过下面的代码 但只允许输入键盘上的数字 我的应用程序要求键盘使用句号 句号 用于金钱交易 我尝试的代码是 BOOL textField UITextField textField shouldChangeCharactersInR
  • Spark 作业因 java.io.NotSerializedException: org.apache.spark.SparkContext 失败

    当我尝试应用方法 ComputeDwt 时 我遇到了上述异常RDD Int ArrayBuffer Int Double 输入 我什至正在使用extends Serialization在 Spark 中序列化对象的选项 这是代码片段 inp
  • 将 MvxCommand 与 CommandParameter 绑定结合使用

    我正在尝试用火MvxCommand 与 CommandParameter 但面临以下问题 MyView axml 包含
  • 如何在 XCode 中使用 ARM 汇编器?

    出于教育目的 我想向现有的 iPhone 应用程序添加一个用 ARM 汇编语言编写的函数 一般来说 我不需要 ARM 汇编教程 因为我已经读了太多了 我只是不知道如何实际运行代码 我想做的是这样的 无用 h void useless 无用