- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要bx
到Thumb函数,需要设置地址的最低有效位。 GNU 作为文档 states本地址是从 adr
伪指令生成时,这是如何工作的:
adr <register> <label>
This instruction will load the address of label into the indicated register. [...]
If label is a thumb function symbol, and thumb interworking has been enabled via the
-mthumb-interwork
option then the bottom bit of the value stored into register will be set. This allows the following sequence to work as expected:adr r0, thumb_function
blx r0
所以听起来事情应该正常进行。然而,看看一些反汇编,似乎某些地址没有设置了底部位。
例如,组装和链接:
.syntax unified
.thumb
.align 2
table:
.4byte f1
.4byte f2
.4byte f3
.align 2
.type f1, %function
.thumb_func
f1:
adr r1, f1
adr r2, f2
adr r3, f3
bx r1
.align 2
.type f2, %function
.thumb_func
f2:
adr r1, f1
adr r2, f2
adr r3, f3
bx r2
.align 2
.type f3, %function
.thumb_func
f3:
adr r1, f1
adr r2, f2
adr r3, f3
bx r3
与:
arm-none-eabi-as adr_test.s -mthumb -mthumb-interwork -o adr_test.o
arm-none-eabi-ld adr_test.o
并检查arm-none-eabi-objdump -D a.out
,我得到:
00008000 <table>:
8000: 0000800d .word 0x0000800d
8004: 00008019 .word 0x00008019
8008: 00008025 .word 0x00008025
0000800c <f1>:
800c: f2af 0103 subw r1, pc, #3
8010: a201 add r2, pc, #4 ; (adr r2, 8018 <f2>)
8012: a304 add r3, pc, #16 ; (adr r3, 8024 <f3>)
8014: 4708 bx r1
8016: 46c0 nop ; (mov r8, r8)
00008018 <f2>:
8018: f2af 010f subw r1, pc, #15
801c: f2af 0207 subw r2, pc, #7
8020: a300 add r3, pc, #0 ; (adr r3, 8024 <f3>)
8022: 4710 bx r2
00008024 <f3>:
8024: f2af 011b subw r1, pc, #27
8028: f2af 0213 subw r2, pc, #19
802c: f2af 030b subw r3, pc, #11
8030: 4718 bx r3
8032: 46c0 nop ; (mov r8, r8)
有几点需要注意:
table
中,f1
、f2
和 f3
的绝对地址都是奇数,正如预期的那样。因此,显然,汇编器和链接器知道这三个函数应该是Thumb。adr
伪指令汇编为 subw
,正如预期的那样,偏移量是奇数。adr
伪指令汇编为 add
),偏移量是偶数。我错过了什么?
最佳答案
您缺少的是 ARM 文档中 ADR pseudo-instruction 的这一行:
If you use ADR to generate a target for a BX or BLX instruction, it is your responsibility to set the Thumb bit (bit 0) of the address if the target contains Thumb instructions.
前向引用 ADR 指令使用 ADD 指令的 16 位 Thumb“ADD Rd、pc、#imm”形式。该指令的立即数在 0-1020 范围内,并且必须字对齐(即,用 8 位字段进行编码并乘以 4。)所使用的 PC 值也将低两位设置为 0,因此它无法生成奇数地址。
强制汇编器始终使用带有 ADR.W 的 32 位 Thumb 指令应该会导致它在使用函数标签时始终生成奇数地址,但我不知道您是否可以依赖这一点。最好只显式设置较低位。
关于assembly - 为什么前向引用 ADR 指令在 Thumb 代码中以偶数偏移进行汇编?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59110205/
我正在尝试学习对固件修改有用的技能(我没有源代码) 这些问题涉及使用 BX 从拇指代码跳转或调用其他现有拇指代码。 我如何使用 BX 从我的 THUMB 代码跳转到现有固件 THUMB 代码。 我如何
我正在研究具有 Thumb-2 指令集的 ARM Cortex-M3 Controller 。 Thumb 模式用于将指令压缩为 16 位大小。 因此减少了代码的大小。但是正常的Thumb模式下,为什
我对指令集有点困惑。有 Thumb、ARM 和 Thumb 2。从我所读到的 Thumb 指令都是 16 位的,但在 内。 ARMv7M 用户手册 (第 vi 页)提到了 Thumb 16 位和 Th
我有一个要求,我需要在其中实现竖起大拇指、不竖起大拇指的类型的切换按钮,我正在努力了解如何实现这一点。我不确定我是否可以创建一种样式,并且这种样式会根据按钮的按下方式改变图像的背景.... 谁能分享一
我正在尝试创建一个带有拇指的搜索栏,当用户按下它时会改变颜色,当用户松开时会变回颜色。我设法使用 set thumb 更改了 thumb drawable。但是,我还必须在 java 中设置可绘制边界
以下是thumb-2指令的w后缀,如果没有它,它将如何改变指令的语义?搜索结果非常嘈杂,我没有得到答案。 addw r0, r1, #0 最佳答案 我在Cortex-M3 TRM表2-5中看到了ADD
为什么 ARM Controller 在发生异常时要从 THUMB 状态返回到 ARM 状态? 最佳答案 一种解释可能是 ARM 模式是 CPU 的“ native ”操作模式,与有限的 Thumb
我正在为需要链接到现有 THUMB 代码的嵌入式内核 (ARM7TDMI) 编写 THUMB 代码。我正在使用 GNU ARM 嵌入式工具链 ( link )。我无法让链接器将现有的外部代码视为 TH
我正在尝试使用 THUMB 指令创建一个阶乘方法,我基本上做到了。 我只有一个关于 PUSH/POP 操作码的问题:如果我使用 push 将 r0 的值存储在堆栈中(所以 push {r0} ),我可
我正在尝试显示位于拇指上方居中的范围项的值。通过读取值并将元素定位在范围元素上方作为其 clientWidth 的百分比,这非常有效。 然而,距离中间的偏移量越来越大(见图片),这导致值不在拇指上居中
我有一个弹出控件,我添加了一个拇指,这样我就可以将它拖动到屏幕上。拇指的 DragDelta 事件已重载: private static void Thumb_DragDelta(object sen
是否有用于 thumb-2 汇编的模拟器之类的东西?我想编写简单的 ARM Thumb-2 汇编程序并在不需要使用实际 ARM 设备的情况下对其进行测试,所以我唯一的选择是仿真。 我的目标是在 thu
我正在尝试在 slider 组件内的 JSlider Thumb 上方添加一个标签(按坐标方向)。因此,我尝试在 slider 的父组件中执行以下操作: this.setLayout(
我运行了一个我发明的 Java 守护程序,它监视我的 Windoze 10 笔记本电脑上的一个目录,并通过打开它来粉碎进入它的所有内容,将其当前大小写入 NULL,保存它,然后删除它。它笨手笨脚,但有
我正在尝试在 Google App Engine 中调整图像大小并裁剪图像以创建缩略图 我希望能够创建任意尺寸的 200x150 拇指。 这是我到目前为止使用的代码,现在我需要对其进行裁剪,使其不大于
我已经制作了我的音乐应用程序,现在我需要在搜索栏上制作音乐播放/暂停控件。这是图片 如您所见,seekbar 带有自定义拇指图像,当用户触摸拇指音乐时,音乐开始播放或停止。是否可以实现类似的功能?基本
我正在开发谷歌浏览器扩展程序。在那里我想获取顶级站点的缓存缩略图。 当我访问像 chrome://thumb/http://www.google.com/ 这样的 url 时,我可以看到缩略图。但在我
我为一些 slider 创建了一个自定义类。在 chrome 中一切正常。请参见下图: Chrome 但我的问题是在 Internet Explorer 上我得到了这个: 现在这是我的 CSS: in
有没有人对 IE11 中输入范围控件上的 ms-thumb 伪元素的样式和控制行为有任何经验? 如果控件比 thumb 伪元素高,则拖动后 thumb 会粘在顶部并且不会返回到它的原始位置。 Here
我正在使用 prettyphoto 并想切换到 fancybox,我的画廊正在使用 isotope 进行滤镜和动画处理,但我认为这不是问题所在。图像出现,但没有拇指!在开发工具中,当选择图片时,有一个
我是一名优秀的程序员,十分优秀!