首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM/Thumb-2指令集和汇编

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

Stack Overflow用户
提问于 2014-05-05 18:55:48
回答 1查看 1.7K关注 0票数 0

首先,当涉及到手臂装配时,我是新手。我实际上有一些为ARM指令集编写的代码,但我的目标是使用Thumb-2指令集的Cortex-M4架构。我是不是必须重写整个代码,修改其中的一部分,还是保持原样?

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

代码语言:javascript
复制
msr cpsr_c, #(CPSR_IRQ_LOCKED | CPSR_SVC_MODE)
stmfd sp!, {r0-r2,lr}
mrs r1, spsr
stmfd sp!, {r1}
ldr r1, =nested_kernel_entrance_counter
ldr r2, [r1]
add r2, r2, #1
str r2, [r1]
cmp r2, #1
bhi skip_kernel_enter

#if WITH_MEMORY_PROTECTION == YES
stmfd sp!, {r3}
bl tpl_mp_kernel_enter
ldmfd sp!, {r3}
#endif
ldr r1, =tpl_kern
mov r2, #NO_NEED_SWITCH
strb r2, [r1, #TPL_KERN_OFFSET_NEED_SWITCH]
EN

回答 1

Stack Overflow用户

发布于 2014-05-05 21:48:41

根据所使用的ARM指令集和ARM变体的特性,您可能不需要重写太多代码。也有可能您的ARM代码已经与Thumb-2兼容。

一旦Thumb-2被引入,ARM就创建了统一汇编语言,以增加代码的可移植性。你可以在这里找到它的信息:ARM UAL。我发现它与以前的ARM汇编并没有太大的不同,最大的变化是引入了用于条件执行的IT(E)指令。维基百科有一个here的例子。

还有一些其他结构不能直接移植,如果您正在使用Cortex-M4没有的更高级或更复杂的ARM内核的功能,那么将需要重写该部分。

我认为如果代码不是用ARM UAL编写的,虽然这需要时间,但在代码上运行一个脚本来标记UAL没有正确编写的功能的用法将是相对简单的。一个简单的正则表达式可以检查指令末尾的条件,甚至可以相对容易地将这些构造转换为使用IT(E) <cond>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23470779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档