问题标签 [thumb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2228 浏览

assembly - THUMB push/pop instructions

I'm trying to create a factorial method using THUMB instructions, and I'm basically there.

I just have one question about the PUSH/POP opcodes: if I stored the value of r0 in the stack using push (so push {r0}), can I later use pop {r1} to pull it out or do I need to specify the same register as it was in to begin with? Thanks for your help.

0 投票
1 回答
916 浏览

android - Android 没有 qsort_r(或如何禁用强制 Thumb 在 Android ARM 代码中使用 CLZ)

我想做的(高级):在 Android 上使用 qsort_r。

没有默认实现。所以我从 BSD 中获取了一个。不幸的是,它需要在 Android 上也不可用的 fls 功能。因此,我获取了 Apple Open Source Libc 库并将 ARM 实现复制到内联程序集中。现在我得到了这个:

AFAIR ARM-6 在 Thumb 模式下不支持它。那么如何为这个文件强制非 Thumb 模式,或者纯 C 实现可用于 fls?

(天哪,我为什么要玩这么低级才能拥有 qsort_r...)

0 投票
1 回答
1452 浏览

arm - LPC 1769(cortex m3) Code Red IDE---没有可用于 g_pfnVectors() at0x0 的源

我正在尝试使用堆栈 PSP 从用户模式调用 SVC。我在调试 LPC 1769(cortex m3) 上的代码时观察到以下错误------- No source available for "g_pfnVectors() at 0x0" 我使用的 IDE 是来自 Embedded 的带有 LPC 1769 的 CODE RED LPC Xpresso艺术家。

这是汇编代码

在 SVC 中,我进行堆栈检查并调用相应的函数以在控制台上打印。这是 SVC 代码:

printhex/printcaharacter/printdecimal 是用于在控制台上打印相应值的函数。

在调试、单步模式期间,在 SVC 指令之后,出现错误 No source available for "g_pfnVectors() at 0x0" 。

错误的原因和到来是非常出乎意料的。gdb 调试器有什么问题,还是我解释代码的方式有误?

0 投票
0 回答
212 浏览

objective-c - Xcode 4.6 编译非 Thumb 架构

我在 Xcode 中构建了一个项目,目的是不为 Thumb 指令集(armv6 或 armv7)编译它。我知道不为 armv7 中的 Thumb 指令集编译不是最优的,但我满足了客户的要求。

有谁知道我如何测试由 lib.a 文件和 .h 文件组成的构建,以查看它是否实际上是在没有 Thumb 指令集的情况下构建的?

只是为了记录,我为 GCC_THUMB_SUPPORT 添加了一个用户定义的构建设置,并将其值设置为 NO。此外,我在构建设置中将 -mno-thumb 添加到 OTHER_CFLAGS 中。

0 投票
3 回答
1825 浏览

encoding - 为什么ARMv7中的一条指令有多个编码

我目前正在尝试为实现 ARMv7 指令集的 ARM cortex A9 实现反汇编程序。

为此,我正在使用可以在此处下载的手册“DDI0406C_b_arm_architecture_reference_manual.pdf”(在 arm 网站上注册后):

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html

在本手册的 A8.8 部分的说明详细信息中,我无​​法理解为什么一条指令有多种编码(如 A1、A2、...),这些似乎都是用 ARMv7 实现的。

此外,由于 ARM 皮质 A9 使用了 thumb-2,它是否也实现了 A1/A2/... 编码,还是仅实现 T1/T2... ?

我真的阅读了本手册的所有部分都与编码有关,但我仍然不明白我们如何知道程序使用哪种编码。

0 投票
2 回答
2749 浏览

c - ARM-C 互通

我正在尝试一个简单的 ARM-C 互通程序。这是代码:

汇编文件如下-

在 LPC1769(嵌入式艺术家板)上调试期间,我在指令“result=Start()”上遇到硬故障错误。我正在尝试在这里进行 arm-C 互联。执行上述语句(result=Start())时的lr值为0x0000029F,故障指令所在,pc值为0x0000029E。这就是我在 r1 中得到错误指令的方式

谁能解释我哪里出错了?任何解决方案表示赞赏。先感谢您。

我是 cortex-m3 的初学者,并且正在使用由 Code_Red 提供支持的 NXP LPCXpresso IDE。这是我的代码的反汇编。

根据您的建议 Dwelch,我已将 r10 更改为 r3。

0 投票
2 回答
1924 浏览

gcc - 带有 gcc 内联汇编的 Cortex m3 svc

我希望把一个svc#变成c代码。现在我可以用汇编来占用svc的值了。

但我希望将它翻译成 c 代码中的内联汇编。但我发现 sp 将通过局部变量或其他东西的函数条目进行修改。有没有可能解决这个问题?谢谢

0 投票
1 回答
307 浏览

arm - Cortex A15 上的 ARM THUMB 模式问题

我们使用的是皮质 A15 和内核 3.8。如果我编译 arm-gcc-4.7.3 test.c -o test_thumb -mthumb

在内核中,如果我设置了 CONFIG_ARM_THUMB 或未设置。我的 THUMB(用户空间)总是运行,

所以我无法理解这种行为。

0 投票
0 回答
1211 浏览

gcc - objdump 反汇编使用 -marm 作为拇指指令编译的可执行文件

我用 gcc -marm 编译了一些代码,然后当我尝试用 objdump 反汇编时,一半的指令是 16 位的,所以我猜是拇指指令。为什么 ?

我见过这个问题: objdump and ARM vs Thumb

所以我尝试用objdump -marm -b binary -D反汇编它,但是反汇编似乎很奇怪......

我怎么知道这是尽管使用了 -marm 选项但使用拇指指令的 gcc,还是有问题的 objdump?

编辑:这是用 16 位指令进行反汇编的一小部分:

.init 部分的反汇编:

00008304 <_init>: 8304: b508 push {r3, lr}
8306: f000 f849 bl 839c
830a: bf00 nop
830c: bd08 pop {r3, pc}

0 投票
3 回答
958 浏览

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

因此,通过查询来确定 iOS 设备运行哪种 CPU 相当容易sysctlbyname("hw.cpusubtype", ...),但似乎没有明显的方法可以确定 CPU 实际具有哪些功能(想想 VFP、NEON、Thumb 等)。有人能想出办法吗?

基本上,我需要的是类似于getauxval(AT_HWCAP)Linux/Android 上的东西,它返回 CPU 支持的功能的位掩码。

需要注意的几点:

  1. 必须在运行时从操作系统检索信息。没有预处理器定义。
  2. 胖二进制文件不是解决方案。我确实需要在 ARM v6 二进制文件中了解这些内容。

提前致谢!