问题标签 [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.
iphone - iPhone 3GS 上的 ARM 与 Thumb 性能,非浮点代码
我想知道是否有人对 iPhone 3GS 上的 ARM 与 Thumb 代码性能有任何硬性数据。专门针对非浮点(VFP 或 NEON)代码 - 我知道 Thumb 模式下的浮点性能问题。
更大的 ARM 指令的额外代码大小是否会成为性能危害?换句话说,如果我的可执行代码与可用内存相比相对较小,那么打开 Thumb 模式是否有任何测量的性能差异?
我问的原因是,虽然我可以使用“-marm”选项为 Xcode 中的 NEON 特定源文件启用 ARM,但这会破坏模拟器构建,因为 GCC 正在构建 x86。我想知道我是否应该关闭“编译为拇指”并完成它。
iphone - iPhone 为拇指编译
我听说在 iPhone 目标的设置中关闭“为拇指编译”以提高性能可能是个好主意。不过,我在找到此设置时遇到了一些麻烦。由于我在当前项目中找不到它,我决定制作一个新的(我可以找到并设置它),并将我的文件复制到它(同时更新我正在使用的所有库) )。
但现在看来这个设置也从这个新项目中消失了。无论我选择什么 SDK,模拟器或设备,该设置都不会显示在目标设置中!然而,我似乎仍然突然在“用户定义”类别下有一个名为 GCC_THUMB_SUPPORT 的变量。这是什么?
我尝试创建一个新目标,但该设置也不会显示在其中(甚至没有 GCC_THUMB_SUPPORT)。
c++ - iPhone 拇指 & VFP
“为 Thumb 编译”和 VFP 代码如何相互关联?
在 iPhone 2G/3G 上,我知道 Thumb 指令集不包括浮点计算(在 3GS 上,Thumb2 显然有..)。那么,如果为 thumb 编译,但使用 VFP 代码进行浮点计算,会发生什么?
我知道这很深入-但可能这里有人知道...c
iphone - iPhone:为单个源文件停用 Thumbmode
带有 GCC 4.2 的 Xcode
似乎可以为整个项目停用拇指模式,并通过将 -mthumb 编译器标志放在此文件的“附加编译器标志”列表中来为单个源文件激活它。
我正在寻找一种相反的方法。为整个项目激活 Thumb,但为某些特定文件停用它。
问题是,一般来说,当我为 Thumb 编译时,我的项目性能会更好。但是 - 我正在使用的引擎的更新版本有一些 VFP 汇编代码,只有在 Thumb 被停用时才能编译。所以我想只为那些特定文件停用 Thumb,并为其他所有文件激活它
谢谢!
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
看看我的处理器是否真的支持拇指,我发现它确实受到支持。我得到 -
arm - 在 ARM 架构中可以从 arm 模式切换到 thumb 模式的所有方式都列出并详细解释?
我找不到这个问题的答案。您能告诉我 ARM 架构何时从手臂模式切换到拇指模式吗?解释转换工作的所有方式。
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 错误吗?我很难相信,这在现实生活中不会发生!我的代码肯定是错的?!
ios - 如何检查 iPhone SDK 的第 3 方静态库是否为 Thumb 编译?
我正在使用一个开发平台(monotouch),由于苹果链接器中的错误,该平台不允许我链接为 Thumb 编译的第 3 方库。我如何确定一个库是否是为拇指编译的?
谢谢!
arm - 使用 ARM Thumb 指令集时访问(加载/存储)32 位整数是原子的吗?
使用带有拇指指令集和 Keil realview 编译器的 ARM cortex,访问 32 位整数是否安全?由于拇指寄存器集是 16 位,这是否意味着获取 32 位 int 需要 2 条机器指令?如果是这样,访问 32 位将不是原子的。如果我的担心是真的,这是否意味着 int 分配应该受到关键区域的保护?
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。