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

assembly - 将数据写入绝对地址

我目前正在使用 Cortex-M3 微控制器上的汇编程序。我不确定这是否重要,但给你。

我需要将一个值写入内存中的某个地址。这是我尝试过的:

但似乎我需要参考相对于 PC 寄存器的 VTOR 地址。问题是是否有办法不引用地址相关并让它自动执行(这样它基本上看起来像我的方法)。

我正在使用 GNU 汇编程序。

0 投票
3 回答
1876 浏览

linux - _start 可以是拇指功能吗?

请帮助我使用 arm926ejs cpu 的 gnu 汇编程序。

我尝试构建一个简单的程序(test.S):

并成功构建它:

但是当我在 arm 目标 linux 环境中运行程序时,我得到一个错误:

我究竟做错了什么?_start 函数可以是拇指函数吗?或者它总是手臂功能?

0 投票
1 回答
266 浏览

assembly - 与 arm 指令集相比,拇指的指令数如何增加?

我在一篇研究论文中读到,当使用 thumb 指令时,代码大小会减小,但有时这会导致指令数量增加,从而使 thumb 执行速度变慢。但是指令数是如何增加的呢?是不是像那些对拇指来说太复杂的指令被分成多个指令?这是我的直觉。想验证我是否以正确的方式思考。

0 投票
1 回答
320 浏览

exception-handling - 如何为 Cortex-M3 设置异常处理程序

我开始在 STM32L152 Cortex-M3 上做一些简单的项目......

我读到 M3 仅是 thumb2,因此,我们需要将异常处理程序地址的 LSB 保持为“1”以保持拇指模式。

由于指令是 16 位或 32 位的,所以说“reset_handler”符号的地址 LSB = 0 是否正确?

如果是这样,一般来说,如何/何时/在哪里将处理程序符号(reset_handler、NMI_handler 等)的 LSB 设置为“1”?

非常感谢

0 投票
2 回答
2074 浏览

branch - Using B instructions in Cortex-M3 (thumb)

I read that in Cortex-M3 which is thumb only, whenever we write to PC, we must make sure the the target address LSB is a '1' to ensure the processor stays in thumb mode.

Also, when we use 'BX reg', the reg values must have LSB = 1 to enable thumb mode.

How about the case when we are using a 'B label' in a cortex-m3? this 'label' will have a value with LSB = 0 since 16-bit/32-bit instructions are aligned to even address. Isn't 'B label' equivalent to 'PC := label'?

Are 'B label' and 'BL label' exceptional cases where the writing of PC will not affect the processor mode?

Thank you.

0 投票
1 回答
5067 浏览

android - 如何将 rust 代码编译并链接到 android apk 打包应用程序中

我正在尝试将 Rust 代码添加到 android NDK 示例(本机活动);每当我将 Rust 代码(编译为 .a)链接到 .so 时,它就无法运行。

我从这里继续获取信息以获取 android 感知 rust 编译器和“独立工具链” https://github.com/mozilla/rust/wiki/Doc-building-for-android

有人在 Rust IRC 频道上建议我需要在某处提及“拇指”;是否有传递给 rustc 的选项,或者我是否必须首先以不同的方式构建它?

我当然能够在桌面版本上互相调用 rust & c。

是否有一个示例,其中有人在 .apk 中使用了 rust 代码;它必须很简单。要破译复杂项目的makefile非常困难。(我认为通过阅读伺服源很难弄清楚这一点)

我已经验证了这个过程会生成一个可用的包而不会生锈;如果我链接未剥离的 rust 代码,它只会无法运行 ——即使它没有达到(即使链接没有告诉我任何错误)。如果我删除对“rusty_android()”的调用,它就可以工作。如果我将对 rusty_android 的调用移动到未达到的点,它仍然不起作用。我可以用 'nm' 验证 'rusty_android' 是否在 .so ... 中。

这是我当前的构建过程:它取自 android native-activity 示例;我添加了一个带有单个 extern 函数返回值的 rust 源文件,并尝试从示例的 C main 调试打印

通过比较 LLVM IR 和 asm 源,可能需要一些特定于“拇指”的东西的怀疑,但奇怪的是,这将是除“arm-linux-androideabi”之外的额外选项

0 投票
3 回答
6855 浏览

arm - What's the meaning of W suffix for thumb-2 instruction?

There is a w suffix for thumb-2 instruction as below, how does it change the semantic of the instruction without it? The search result is very noisy and I didn't get the answer.

addw r0, r1, #0

0 投票
1 回答
709 浏览

linux-kernel - “THUMB”宏在 ARM-linux 代码中的作用是什么?

我正在查看 head.S ARM linux 代码。我知道拇指模式是什么。但是有一行,例如THUMB(it eq),它是一个预定义的宏,因为#define THUMB(x...) x dotdotdot实际编写的。

请告诉我宏的作用。

0 投票
1 回答
483 浏览

arm - ARM Cortex-M4:在汇编中调用 printf 时遇到的问题

我试图在 ARM M4 程序集中调用 printf 并遇到一些问题。目的是转储 R1 中的内容。代码如下

我遇到的问题是,当将“output_string”地址放入R0时,该值加上一个额外的1。例如,如果符号“output_string”的值为0x2000,则R0将得到值0x2001。

我觉得这与 THUMB/ARM 模式有关。但是我已经在数据部分声明了“output_string”,为什么汇编器仍然将它翻译为指令地址?

还是有一些更正式的方法来进行这种汇编函数调用?

0 投票
1 回答
3215 浏览

gdb - 如何判断我在 gdb 中是处于 ARM 模式还是 Thumb 模式?

使用 GDB 调试 ARMv7 二进制文件时,除了查看指令长度之外,有没有办法确定 CPU 当前处于哪种模式?(手臂,拇指)