ARM BLX 指令范围(绝对)

2023-11-29

我有一个关于 ARM BLX 指令的问题,特别是关于 BLX RX 指令的问题。 ARM手册上规定,对于BLX标签,标签应在32MB范围内。在我的代码中,我将 R0 寄存器设置为指向地址 1。我当前的地址和address1(目标地址)之间的距离约为0x05000000。

当我到达指令时,它崩溃了(地址1中的代码是ARM,所以T模式没有问题)。在 BLX 中使用绝对值时有任何限制吗?我应该使用贴面吗?

Thanks!


您可以使用任何地址作为 RX 寄存器,格式为 BLX RX。它将执行手臂arm中描述的动作。



if ConditionPassed(cond) then
    target = Rm
    LR = address of instruction after the BLX instruction
    CPSR T bit = target[0]
    PC = target AND 0xFFFFFFFE
  

如果代码、调用或被调用的代码都不是拇指模式,那么您可能没问题,请确保在这种情况下您给出的地址的 lsbit 为零。您实际上需要在 0x05000000 处有代码,并且需要是旨在处理分支链接的代码,这意味着如果它进行更多 bl 样式调用,它会维护链接寄存器 (r14)。同样,如果您在从其他人调用的函数内进行此 blx 调用,则需要在进行 blx 调用之前保留 r14 并恢复 r14,或者在从函数返回时执行任何操作将该值放回到 r15 (pc) 中。

反汇编/objdump 列表的代码示例或片段将有助于进一步帮助您解决此问题。包含 blx 的代码和被调用的代码。

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

ARM BLX 指令范围(绝对) 的相关文章

  • 如何查找 C++ 中的内存泄漏

    在嵌入式环境中检测 C 内存泄漏的好方法是什么 我尝试重载 new 运算符来记录每个数据分配 但我一定做错了什么 这种方法不起作用 还有其他人遇到过类似的情况吗 这是 new 和 delete 运算符重载的代码 EDIT 完全披露 我正在寻
  • 快速CRC算法?

    我想从 ASCII 字符串创建一个 32 位数字 CRC32 算法正是我正在寻找的 但我无法使用它 因为它需要的表太大了 它适用于资源非常稀有的嵌入式系统 那么 对于快速且精简的 CRC 算法有什么建议吗 当冲突的可能性比原始 CRC32
  • Node.js |如何通过串口向设备发送和接收一个字节?

    我正在尝试编写使用以下方法的 Node js 脚本serialport https serialport io 用于读取和写入数据的 npm 包COM5串行端口 使用 RS 232 电缆连接到设备 该设备会自动传输其拥有的数据 要检索设备内
  • 创建 32 位计数器时出现全局变量问题

    我正在尝试做正交解码 using 爱特梅尔 Xmega AVR微控制器 Xmega只有16 bit柜台 另外 我已经用完了所有可用的计时器 现在要做32 bit柜台我用过一个16 bit柜台并在其over under flow interr
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • 用于嵌入式服务器的 Web 技术

    我最近开始了一个针对嵌入式设备的新 Web 开发项目 并希望征求一些有关使用技术的建议 该设备将提供 HTML 页面 其中包括用于从 JSON 服务器检索数据的 AJAX 代码 我们暂时使用 Cherokee 作为 Web 服务器 但我们并
  • C 中的可移植函数(无汇编)返回其堆栈帧的大小

    用 C 编写一个可移植函数 无需汇编 返回其堆栈帧的大小 int stackframe size 尝试如下解决 该函数在使用 VS 2010 编译时返回 228 字节 有没有办法验证其正确性 int stackframe size int
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • ELF 文件头

    关于 elf 文件头的一个简单问题 我似乎找不到任何关于如何在 elf 头中添加 更改字段的有用信息 我希望能够更改幻数并向标题添加构建日期 以及可能的其他一些内容 据我了解 链接器创建标头信息 但我在 LD 脚本中没有看到任何引用它的内容
  • 嵌入式+实时开发培训的建议[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在学习嵌入式实时工程职业 但发现找到好的培训材料有些困难 特别是因为您无法像桌面应用程序开发那
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 工作站和嵌入式程序员之间的心态差异[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t
  • 需要一些建议来开始在 ARM(使用 Linux)平台上编程

    我 也许 很快就会在托管 Linux 发行版的 ARM 平台上工作 我不知道哪个发行版 我知道该项目涉及视频流 但我无法告诉你更多信息 其实我只收到通知 还没见到任何人 我从来没有在这样的平台上工作过 所以我的想法是在项目开始之前进行测试
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI

随机推荐

  • BitmapImage:访问关闭的StreamSource

    我正在使用以下代码尝试将 BitmapImage 转换为 byte 以便我可以将其保存在我的 MS SQL 数据库中 public static byte BufferFromImage BitmapImage img if img nul
  • 如何从下拉选择中选择一个选项

    我可以单击选择器 但我的问题是如何从下拉列表中选择选项之一 await page click telCountryInput gt option nth child 4 使用 CSS 选择器单击该选项不起作用 例如 从如下列表中选择国家 地
  • CursorLoader 中 SDCARD 中的 Sqlite 数据库的 uri 是什么

    我是 Android 新手 我已经阅读了很多关于从 Sqlite 数据库加载数据的最佳方法的内容 并且阅读了 Alex Lockwood 的博客 我最终决定使用 CursorLoader 和 LoaderManager 我的问题是很多人想在
  • Android:有没有办法通过javascript来控制音量

    Android Phonegap 有 javascript 函数来播放 暂停 恢复和停止媒体播放器 有没有办法通过javascript函数控制音量 增加 减少 1 phonegap js 文件包含 在html页面中
  • 我们如何列出 Google Drive 上特定文件夹中的所有文件

    我们注意到 Google Drive APIJavaScript允许您列出特定文件夹中的所有文件 但它仅带来文件的基本详细信息 如果我们想了解更多信息 例如文件名 我们需要再次查询每个文件的 API 有没有一种方法可以让我们列出文件的更多详
  • 如何设置Cloudfront和S3以指向每个路由的index.html?

    我有一个托管在 AWS 上的 NextJS 应用程序 我的文件夹结构是这样的 index html articles index html article1 index html article2 index html 如何将路由设置为 a
  • Weld 在库 jar 中找不到 CDI 生成器方法

    使用 Wildfly 8 2 0 Final 我相信它使用 Weld 2 2 我在 Maven 多模块项目中使用 2 个简单的类重现了这个问题 一个产生一个javax ws rs client Client 另一个有相同的注入点 Arqui
  • 用于创建 C/C++ 解析器/分析器的好工具 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有哪些可以快速开始解析和分析 C C 代码的好工具 特别是 我正在寻找处理 C C 预处理器和语言的开源工具 优选地 这些工具将使用 lex yacc 或 flex bison 作为
  • xcopy 文件、重命名、抑制“xxx 是否指定文件名...”消息

    这看起来很简单 也许我只是忽略了适当的旗帜 但是我如何在一个命令中将文件从一个目录复制到另一个目录并在目标目录中重命名 这是我的命令 if exist bin development whee config example if not e
  • MYSQL ORDER BY CASE 问题

    我有一个这样的数据库 id one id two timestamp one timestamp two 27 35 9 30 NULL
  • JDBC/Connectorj:了解连接池

    我想我需要更好地理解连接池的概念 我正在使用 ConnectorJ 使用 java 进行工作 并将 servlet 部署在 Apache Tomcat 服务器上 我一直在关注文档 所以我的 Tomcat context xml 如下所示
  • Rails 中 -%> 和 %> 之间的区别[重复]

    这个问题在这里已经有答案了 我已经开始了一些 Rails 教程 并注意到一些视图代码块就像 h1 h1 其他代码块就像 h1 h1 gt 和 gt 有什么区别 如果您知道一些好的语法参考 可以给我指出 这也会很有帮助 额外的破折号使得 ER
  • 如何在 Node js 中发送 POST 请求内容类型为 application/octet-stream 的文件

    我正在尝试将一些内容上传到 Facebook 的服务器 他们的官方文件指出 使用对话框中的令牌 您可以向我们的 Graph API 提交以下调用以提交您的 zip 请注意 我们正在使用视频子域 但这是故意的 因为该 URL 被配置为接收更大
  • 为什么尝试将 Grape 与 Rails 一起使用会因“未初始化常量 API”而失败?

    我希望有人解释一下为什么在 Rails 4 1 8 和 Grape 0 10 1 中会发生这种情况 这是我的 API app api root rb module API class Root lt Grape API prefix api
  • 使用 .pth 文件

    我正在尝试使模块在我没有全局写入权限的系统上可发现site packages目录 并且不改变环境 PYTHONPATH 我试图放置一个 pth文件与我正在执行的脚本位于同一目录中 但它似乎被忽略 例如 我创建了一个文件extras pth包
  • 使用 Maven 构建完整的应用程序文件夹

    大多数 Java 独立应用程序在部署到生产环境后最终都会出现在如下所示的文件夹中 myapp gt lib here lay all dependencies gt config here lay all the config files
  • 在 JavaScript 中将十六进制转换为浮点数

    我想将带有分数的以 10 为底的数字转换为以 16 为底的数字 var myno 28 5 var convno myno toString 16 alert convno 那里一切都很好 现在我想将其转换回十进制 但现在我不能写 var
  • 使用 Jetpack 的 Android 导航组件销毁/重新创建的片段

    我正在尝试实施使用 Jetpack 架构组件进行导航在我现有的应用程序中 我有一个活动应用程序 其中主要片段 ListFragment 是一个项目列表 目前 当用户点击列表项时 第二个片段将添加到堆栈中fragmentTransaction
  • 如何在 Android 中实现“Lettrine”渲染?

    我有一个小问题 如何在 Android 中实现 Lettrine 删除首字母大写字母 渲染 我的意思是 一个自动渲染 lettrine 的小部件 这是我正在寻找的示例 我很确定没有 简单的方法 可以做到这一点 但如果有的话可以帮助 欢迎所有
  • ARM BLX 指令范围(绝对)

    我有一个关于 ARM BLX 指令的问题 特别是关于 BLX RX 指令的问题 ARM手册上规定 对于BLX标签 标签应在32MB范围内 在我的代码中 我将 R0 寄存器设置为指向地址 1 我当前的地址和address1 目标地址 之间的距