thumb相关内容

混合 ARM 和 THUMB 指令

我正在尝试在我的汇编代码中混合使用 ARM 和 THUMB 指令.例如,在下面的代码中,我尝试使用这两种模式: .thumb @ .code 16.section __TEXT,__text.globl mySymbol1我的符号1:…….arm @ .code 32.section __TEXT,__text.globl mySymbol2我的符号2:... 现在,根据我的理解,当我将此代码 ..
发布时间:2022-01-17 14:15:05 移动开发

thumb-2指令的W后缀是什么意思?

thumb-2 指令有一个 w 后缀,如下所示,如果没有它,它如何改变指令的语义?搜索结果很吵,我没有得到答案. addw r0, r1, #0 解决方案 我在 Cortex-M3 TRM 表 2-5 大立即数的数据操作ADDW 和 SUBW 有一个 12 位立即数.这意味着它们可以从内存文字加载中替换许多. 快速参考 加宽 T2 ADD Rd, Rn, # 看 ..
发布时间:2022-01-17 14:12:41 其他开发

WinPhone8 是否完全支持 ARM(不是 Thumb)?

我遇到了一个奇怪的问题,有点类似于 这个.我有一个 Windows Phone 8 本机 DLL 项目,主要是 C++,但其中包含 ARM 程序集源.源处于 ARM 模式(即不是 Thumb).C++ 编译为 Thumb. 当 C++ 尝试调用汇编例程时,应用程序崩溃.反汇编中的调用命令是带有立即偏移量的 BLX - 它应该无条件地将模式切换回 ARM,但不知何故它没有. 我有异常的详 ..
发布时间:2022-01-17 13:55:40 其他开发

ARM指令集中的缩写(Rn, Rd, ...)是什么意思?

最近我检查了 ARM Cortex-M3 处理器的指令集.例如: 添加 , , 这些缩写的确切含义是什么?我猜他们的意思是不同类型的地址,比如直接寻址、相对寻址等等.但究竟是什么? 谢谢! 解决方案 基础知识: Rd 是目的地,Rn 和 Rm 是来源.它们都是通用整数寄存器;FP 将使用 Sd/Sn/Sm 或 Dd/Dn/Dm 单人或双人. AR ..
发布时间:2022-01-17 13:48:30 其他开发

itte 在臂组件

下面这行代码在arm组装中做了什么: 000031e6​​ 2916 cmp r1, #22000031e8 bf1a itte ne 我得到了第一行(比较 r1 和 22)但是第二行呢(我以前从未见过 itte 命令,谷歌搜索什么也没返回) 解决方案 是ARM的IF-THEN-ELSE指令,在Thumb-2指令集中引入.(根据您上面的具体示例,如果您在 ITTE 指令之后显示了接下来 ..
发布时间:2022-01-17 13:46:22 其他开发

ARM 程序集中的函数地址有一个字节偏移?

例如,我有以下由 objdump 得到的汇编代码.f()的地址是080001d4.但是 printf("%x", f) 输出 080001d5.而 f() 可以通过 (*((int (*)())080001d5))() 但 (*((int (*)())080001d4))(). 为什么函数地址有一个字节偏移? 080001d4 :80001d4: 2000 移动 r0, #08000 ..
发布时间:2022-01-17 13:41:20 其他开发

ARM、Thumb 和 Thumb 2 指令编码有什么区别?

我对指令集有点困惑.有 Thumb、ARM 和 Thumb 2.根据我的阅读,Thumb 指令都是 16 位的,但在 ARMv7M 用户手册(第 vi 页)中有 Thumb 16 位和 Thumb 32 位指令提及. 现在我必须克服这种困惑.据说 Thumb 2 支持 16 位和 32 位指令.那么 ARMv7M 实际上是否支持 Thumb 2 指令而不仅仅是 Thumb? 还有一件事 ..
发布时间:2022-01-17 13:36:53 其他开发

_start 可以是拇指功能吗?

请帮助我使用 arm926ejs cpu 的 gnu 汇编器. 我尝试构建一个简单的程序(test.S): .global _start_开始:移动 r0, #2bx lr 并成功构建它: arm-none-linux-gnueabi-as -mthumb -o test.o test.Sarm-none-linux-gnueabi-ld -o 测试 test.o 但是当我在arm目 ..
发布时间:2022-01-17 13:25:15 服务器开发

改变函数指针的地址值

我在 C 中有以下代码: int addInt(int n, int m) {返回 n + m;}int (*functionPtr)(int, int);functionPtr = &addInt; functionPtr 是一个函数指针,指向函数addInt的具体地址.我想更改其值的 1 位,但我不知道如何更改. 假设 functionPtr 在最后一条语句之后指向 0xABC0(假 ..
发布时间:2021-11-17 22:39:47 其他开发

arm-none-eabi-ld 是否重写了 bl 指令?

我试图理解为什么某些 Cortex-M0 代码在链接和未链接时表现不同.在这两种情况下,它都被加载到 0x20000000.尽管我尽最大努力通过将 -fPIC 传递给编译器来生成位置无关代码,但在代码通过链接器后,bl 指令似乎有所不同.我的理解是否正确,这只是 ARM Thumb 中链接器工作的一部分,是否有更好的方法来生成与位置无关的函数调用? 链接: 20000000:2000000 ..
发布时间:2021-11-17 22:39:24 其他开发

如何优化 Cortex-M3 的滤波器环路?

我只需要更改代码,使其具有相同的基本功能但更加优化,基本上我认为过滤器循环是可以更改的主要代码段,因为我觉得那里的指令太多,但是不知道从哪里开始.我正在使用 Cortex M3 和 Thumb 2. 我尝试篡改过滤器循环,以便可以将存储在寄存器中的前一个数字相加并除以 8,但我不知道如何真正执行该操作. ;对内存中提供的数据执行就地过滤;要应用的过滤器是以下形式的非递归过滤器;y[0] = ..
发布时间:2021-11-17 22:35:28 其他开发

ARM 到 Thumb 的开关是否会发生流水线停顿?

在 ARM 架构中,如果发生 ARM 到 Thumb 模式的切换,是否会发生流水线停顿?如果是这样,有多少个周期受到影响?这对于 Thumb 到 ARM 模式切换是否相同?这种行为是否因不同的 ARM 处理器而异? 解决方案 不,一点也不. 成本就像任何其他分支指令一样.如果预测器命中,则免费,否则,通常需要花费 13 个周期. 不会因为切换而产生额外的隐藏问题. 因此, ..
发布时间:2021-11-17 22:34:18 其他开发

有没有办法在运行时在 iOS 上检测 VFP/NEON/Thumb/...?

所以通过查询sysctlbyname("hw.cpusubtype", ...),很容易确定iOS设备运行的CPU类型,但似乎没有明显的方法来计算了解 CPU 实际具有的功能(想想 VFP、NEON、Thumb 等).有人能想出办法做到这一点吗? 基本上,我需要的是类似于 Linux/Android 上的 getauxval(AT_HWCAP) 的东西,它返回 CPU 支持的功能的位掩码. ..
发布时间:2021-11-17 22:28:19 移动开发

关于 Thumb-2 的 ARM/Thumb 互操作混淆

一段时间以来,我一直在阅读 ARM ISA 相关文档,到目前为止,我相信我对 ARM/Thumb 互操作的基础知识有了很好的理解.我将快速总结如下: 指令可以是 4 字节对齐 (ARM) 或 2 字节对齐 (Thumb). Thumb 和 ARM 指令位于不同的区域,即它们不会在没有显式处理器状态更改的情况下混合. 状态改变可以在执行 bx、blx、ldm、ldr 中的任何一个时发生.在 ..
发布时间:2021-11-17 22:24:29 其他开发

Thumb 的 LPC4088 校验和值?

在 LPC4088 用户手册(第 876 页)中) 我们可以读到 LPC4088 微控制器有一个非常特别的启动程序: 这看起来完全是胡说八道,我需要有人帮我解决问题......在ARM的世界里我听过无数次把向量表变成这样: 重置:b _start未定义:b 未定义软件中断:b 软件中断prefetch_abort: b prefetch_abort数据中止:b 数据中止没有中断请求:b 中 ..
发布时间:2021-11-17 22:23:09 其他开发

如何生成Thumb指令的机器码?

我在 Google 上搜索了生成 ARM 指令的机器代码,例如这个 将非常简单的 ARM 指令转换为二进制/十六进制 答案参考了 ARM7TDMI-S 数据表 (ARM DDI 0084D).数据处理指令图就够了.不幸的是,它适用于 ARM 指令,而不适用于 Thumb/Thumb-2 指令. 以B指令为例.ARM 架构参考手册 - ARMv7-A 和 ARMv7-R 版第 A8.8. ..
发布时间:2021-11-17 22:22:08 其他开发

ARM 程序集不能同时使用立即数和 ADDS/ADCS

我目前正在尝试使用汇编加速 Cortex-M0(飞思卡尔 KL25Z)上的一些 C 函数.这个最小的测试程序有问题: @.syntax 统一.cpu 皮质-m0.文本.global 测试.代码 16测试:移动 r0, #0添加 r0, r0, #1bx lr 当我尝试将 .s 文件组装为 .o 文件时,出现此错误 $ arm-none-eabi-as test.s -o test.otest ..
发布时间:2021-11-17 22:17:17 其他开发

Apple AS 和 ARM/Thumb ADDS 指令

我正在处理一个 iPhone/iPad 项目,我想在一些(不是全部)算术运算中更新状态寄存器.默认情况下,Xcode 使用“Compile for Thumb",我不想更改它. 以下 GCC 内联汇编代码在 ARM 下运行良好,但在 Thumb 下导致编译错误:“Thumb16 模式不支持指令 - 添加 r6、r4、r5".问题在于状态寄存器更新.(我也知道 movcs 和 strcs 需要 ..
发布时间:2021-11-17 22:15:19 其他开发