问题标签 [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 回答
875 浏览

arm - Thumb2和ARM在中断发生时的区别

我正在将一个项目移植到飞思卡尔 TWR-K60F120M 开发板和 Kinetis K60 32 位 ARM® Cortex™-M4 MCU。在操作汇编代码时,我遇到了一个将任务上下文保存在特定寄存器中的函数。

有谁知道当 thumb2(Cortex™-M4 指令集)发生中断时任务上下文保存在哪些寄存器中?

谢谢。

0 投票
1 回答
891 浏览

assembly - Cortex M3 上的非 Thumb ARM 代码

我有一些我试图在 Cortex M3 上运行的 ARM 代码。我的大部分代码都是用 Thumb 编写的,从 C 编译而来——但对于某些功能,我希望能够运行普通的 ARM 代码(据我了解,这在 M3 上是可能的吗?)。

所以...

原始 C 代码和汇编:

编译使用arm-none-eabi-gcc -mfloat-abi=soft -nostdinc -nostdlib

我分支到这个blx r4- 如果基地址和 3 是 0,它应该交换,它是。

在 GDB 中逐步执行此操作,即使地址包含正确的数据,它也会在到达显示的行时立即发生 HardFaults。

该代码(使用 BLX)非常适用于 Thumb 代码......

知道发生了什么吗?谢谢!

0 投票
0 回答
935 浏览

arm - 具有位置无关代码的拇指函数指针?

我希望函数caller将拇指函数指针作为参数:

当我编译它时

然后链接

,链接器尝试fun使用互通代码进行包装,并警告未启用互通。但我不想启用互通,因为我希望它是仅限拇指的代码。没有-fpic,代码编译和函数指针正常工作。

如果要问为什么我必须传递拇指函数指针并提供 PIC 代码,那是因为我无法更改的 API。

编辑:Gcc 版本是 4.7.2。指定-march=armv4t -mcpu=arm7tdmi没有帮助。

0 投票
1 回答
1799 浏览

assembly - ARM/Thumb-2 指令集和汇编

首先,我是 ARM 组装的新手。我实际上有一些为 ARM 指令集编写的代码,但我的目标是使用 Thumb-2 指令集的 Cortex-M4 架构。我是否必须重新编写整个代码、更改其中的一些或保持原样?

我实际上有几个文件,每个文件大约 250 行。这是一个示例

0 投票
1 回答
103 浏览

assembly - 显示不同指令的相同二进制文件的反汇编

我在我的应用程序中使用 at91sam4e16e 微控制器和来自 ASF(xdk-1.15.0) 的引导加载程序示例,用于名为 starter_kit_bootloader_demo 的引导加载程序。

现在我已经为 sam4e-ek 定制了项目,我正在尝试使用该引导加载程序更新二进制文件。

更新后我比较了两个二进制文件 1) 更新引导加载程序二进制文件的反汇编

和 2) 独立

在此处输入图像描述

两个二进制文件都是相同的,但是当我在 IAR 中调试它时,反汇编显示指令不同。为什么不一样?

0 投票
3 回答
12120 浏览

assembly - ARM assembly code and SVC numbering

In ARM assembly codes I can see something like these... (especially in shellcodes)

I know that 'svc(or swi)' is the 'supervisor call' like 'int 0x80' or 'SYSENTER' from Intel. but, how can I interpret the 'svc' numbers?? where can I get the listing of it's information?? What about thumb 'svc' instruction??

The arm instruction manual doesn't seem to be explaining these...

Can someone help me? Thank you in advance.

0 投票
1 回答
567 浏览

arm - ARM ThumbEE 自动空指针检查

在 ARM 中,Thumb-EE 指令集支持自动空指针检查。

ARM 手册说,当 thumb-EE 指令试图引用一个空指针时,一个“处理程序将被调用”。但是谁设置了这个处理程序的地址?怎么样?,什么时候?我无法从 ARM Thumb-EE 手册中得到答案。

0 投票
1 回答
1460 浏览

gcc - ARM Thumb-2、GCC、代码更改和 `stmdaeq` 指令

我正在使用 STM32F4 (Cortex-M4) MCU 并使用 arm-none-eabi-g++ 进行编译(我正在使用 C++)。

我需要减少将二进制文件上传到 MCU 闪存所需的时间。我发现我可以通过仅在修改之间将更改上传到我的二进制文件来做到这一点。然而,编译器正在生成一些有趣的代码,这使得这变得不可能。

考虑以下 2 个程序:

(1)

(2)

通过简单地删除printf调用,二进制文件完全不同。我可以通过反汇编代码来看到这一点arm-none-eabi-objdump -D mybinary。以下是 WinMerge 中的差异示例:

在此处输入图像描述

从图中可以看出,几乎所有函数的stmdaeq指令都略有不同,我想了解更多。

这个问题的答案将包括以下内容:

  • 我知道stmdaeq指令是什么,但为什么它几乎在所有功能的末尾?这是函数的结尾吗?
  • 我能做些什么(编译器选项或其他)来确保小的代码更改(如我上面的示例)不会在整个二进制文件中导致此类更改?

我正在使用GNU Tools for ARM Embedded Processors GCC 工具链。

您的帮助将不胜感激。

0 投票
3 回答
9666 浏览

c++ - GCC --gc-sections 并查找符号依赖项

我正在尝试减小我的 elf 可执行文件的大小。我正在编译-ffunction-sections -fdata-sections和链接-gc-sections,但似乎一些我认为未使用的符号没有被丢弃。

我可以运行 GNU 工具链中的某些命令来找出正在使用哪些符号以及在哪里使用?

  • 工具链:GNU arm-none-eabi
  • 平台:Cortex-M4
  • 语言:C++

这是我典型的构建标志:

汇编:arm-none-eabi-g++.exe -Wall -O3 -mthumb -std=c++11 -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -fsingle-precision-constant -ffunction-sections -fdata-sections

关联:arm-none-eabi-g++.exe -static -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -Wl,-gc-sections -Wl,-T"LinkerScript.ld

谢谢您的帮助。

0 投票
2 回答
553 浏览

arm - ARM 到 Thumb 开关上是否发生流水线停顿?

在 ARM 架构中,如果发生 ARM 到 Thumb 模式的切换,会不会出现流水线停顿?如果是这样,有多少个周期受到影响?Thumb 到 ARM 模式切换也一样吗?这种行为是否因不同的 ARM 处理器而异?