.syntax unified
.thumb
.cpu cortex-m4
.arch armv7e-m
.fpu fpv4-sp-d16
/* Changes from unprivileged to privileged mode. */
.thumb_func
.section .kernel
.global raise_privilege
.type raise_privilege, %function
raise_privilege:
mrs r0, control
bic r0, r0, #1
msr control, r0
dsb
isb
bx lr
这是arm汇编代码的一部分。我可以查看芯片手册来弄清楚指令的含义。但我不知道如何弄清楚汇编程序指令的行为,例如.thumb_func
。而且,我也不知道如何使用这部分代码,它看起来不像常规函数。所以我不知道如何“调用”它。
- The 指示从一个开始
.
是真正的汇编指令。您可以在以下位置查找它们GAS:ARM 机器指令 https://sourceware.org/binutils/docs/as/ARM-Directives.html
-
.syntax unified
表示使用统一的 ARM/Thumb 汇编语法。概念已解释here https://developer.arm.com/documentation/dui0473/i/Cjagjjbc and here https://sourceware.org/binutils/docs/as/ARM_002dInstruction_002dSet.html#ARM_002dInstruction_002dSet.
-
.thumb_func
发出用于 ARM-Thumb 互操作的 Thumb 模式功能启动的信号。概念已解释here https://developer.arm.com/documentation/dui0471/i/Bcghfebi and here http://twins.ee.nctu.edu.tw/courses/ip_core_01/lab_hw_pdf/lab_1.pdf.
-
raise_privilege
看起来完全像void raise_privilege(void)
叶函数(即它不调用其他函数)对我来说是 C 语言。调用它:
bl raise_privilege
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)