问题标签 [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 投票
3 回答
8391 浏览

iphone - iPhone 3GS 上的 ARM 与 Thumb 性能,非浮点代码

我想知道是否有人对 iPhone 3GS 上的 ARM 与 Thumb 代码性能有任何硬性数据。专门针对非浮点(VFP 或 NEON)代码 - 我知道 Thumb 模式下的浮点性能问题。

更大的 ARM 指令的额外代码大小是否会成为性能危害?换句话说,如果我的可执行代码与可用内存相比相对较小,那么打开 Thumb 模式是否有任何测量的性能差异?

我问的原因是,虽然我可以使用“-marm”选项为 Xcode 中的 NEON 特定源文件启用 ARM,但这会破坏模拟器构建,因为 GCC 正在构建 x86。我想知道我是否应该关闭“编译为拇指”并完成它。

0 投票
4 回答
7821 浏览

iphone - iPhone 为拇指编译

我听说在 iPhone 目标的设置中关闭“为拇指编译”以提高性能可能是个好主意。不过,我在找到此设置时遇到了一些麻烦。由于我在当前项目中找不到它,我决定制作一个新的(我可以找到并设置它),并将我的文件复制到它(同时更新我正在使用的所有库) )。

但现在看来这个设置也从这个新项目中消失了。无论我选择什么 SDK,模拟器或设备,该设置都不会显示在目标设置中!然而,我似乎仍然突然在“用户定义”类别下有一个名为 GCC_THUMB_SUPPORT 的变量。这是什么?

我尝试创建一个新目标,但该设置也不会显示在其中(甚至没有 GCC_THUMB_SUPPORT)。

0 投票
1 回答
930 浏览

c++ - iPhone 拇指 & VFP

“为 Thumb 编译”和 VFP 代码如何相互关联?

在 iPhone 2G/3G 上,我知道 Thumb 指令集不包括浮点计算(在 3GS 上,Thumb2 显然有..)。那么,如果为 thumb 编译,但使用 VFP 代码进行浮点计算,会发生什么?

我知道这很深入-但可能这里有人知道...c

0 投票
1 回答
213 浏览

iphone - iPhone:为单个源文件停用 Thumbmode

带有 GCC 4.2 的 Xcode

似乎可以为整个项目停用拇指模式,并通过将 -mthumb 编译器标志放在此文件的“附加编译器标志”列表中来为单个源文件激活它。

我正在寻找一种相反的方法。为整个项目激活 Thumb,但为某些特定文件停用它。

问题是,一般来说,当我为 Thumb 编译时,我的项目性能会更好。但是 - 我正在使用的引擎的更新版本有一些 VFP 汇编代码,只有在 Thumb 被停用时才能编译。所以我想只为那些特定文件停用 Thumb,并为其他所有文件激活它

谢谢!

0 投票
3 回答
2317 浏览

compilation - ARM Thumb 模式:代码大小不减小

伙计们,我有一个为 ARM Cortex-A8 处理器编译的项目。我正在使用 GCC 来执行此操作。目前我的可执行文件的大小是 220.1 KB。现在我修改我的 makefile 并添加标志-mthumb,makefile 行看起来有点像这样 -

我在我的所有 makefile 中进行了这些更改并构建了我的项目,但我最终得到的可执行文件仍然是 220.1 KB。

我对命令行进行了另一项更改,添加了 -mthumb-interwork 选项

我再次得到相同大小的可执行文件 220.1 KB。这样做时我错过了什么吗?

我写了一个小程序,找到两个数字中最小的一个,并使用以下命令行编译它

我得到一个 8.5 KB 的可执行文件

接下来,我做一个

我仍然得到一个 8.5 KB 的可执行文件。

这里有什么问题?

我做了一个cat /proc/cpuinfo看看我的处理器是否真的支持拇指,我发现它确实受到支持。我得到 -

0 投票
1 回答
6509 浏览

arm - 在 ARM 架构中可以从 arm 模式切换到 thumb 模式的所有方式都列出并详细解释?

我找不到这个问题的答案。您能告诉我 ARM 架构何时从手臂模式切换到拇指模式吗?解释转换工作的所有方式。

0 投票
1 回答
1636 浏览

gcc - 这是 GCC 中的错误还是我的代码错误?

我有这个 C 代码:

使用 Android NDK r4b 编译为以下带有 -Os -mthumb 的拇指代码:

但是使用最新的Android NDK r5,它会编译成这个损坏的代码:

这似乎……很奇怪。如果 anim_col 小于 0,它将返回 -2 而不是仅在小于或等于 -15 时返回 -2。重现这一点的完整命令行如下:

android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin/arm-eabi-gcc -c -o test.o -Os test.c --save-temps -mthumb

android-ndk-r5/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -c -o test.o -Os test.c --save-temps -拇指

这是一个已知的 GCC 错误吗?我很难相信,这在现实生活中不会发生!我的代码肯定是错的?!

0 投票
1 回答
457 浏览

ios - 如何检查 iPhone SDK 的第 3 方静态库是否为 Thumb 编译?

我正在使用一个开发平台(monotouch),由于苹果链接器中的错误,该平台不允许我链接为 Thumb 编译的第 3 方库。我如何确定一个库是否是为拇指编译的?

谢谢!

0 投票
2 回答
1386 浏览

arm - 使用 ARM Thumb 指令集时访问(加载/存储)32 位整数是原子的吗?

使用带有拇指指令集和 Keil realview 编译器的 ARM cortex,访问 32 位整数是否安全?由于拇指寄存器集是 16 位,这是否意味着获取 32 位 int 需要 2 条机器指令?如果是这样,访问 32 位将不是原子的。如果我的担心是真的,这是否意味着 int 分配应该受到关键区域的保护?

0 投票
3 回答
3241 浏览

gcc - Apple AS 和 ARM/Thumb ADDS 指令

我正在做一个 iPhone/iPad 项目,我想在一些(不是全部)算术运算期间更新状态寄存器。默认情况下,Xcode 使用“Compile for Thumb”,我不想更改它。

以下 GCC 内联汇编代码在 ARM 下运行良好,但在 Thumb 下导致编译错误:'instruction not supported in Thumb16 mode - 添加 r6、r4、r5'。问题在于状态寄存器更新。(我也知道movcs并且strcs需要更改)。

Thumb 是否有在 CPSR 中设置溢出 (V) 或进位 (C) 的 ADD 指令?如果没有,是否有特定于 Thumb 的汇编级解决方法来测试溢出和进位?

编辑:还需要移动寄存器以利用ARM ABI at Application Binary Interface (ABI) for the ARM Architecture