【发布时间】:2021-10-29 12:54:42
【问题描述】:
我正在尝试编写简单的 RTOS,但我正在为编译器生成的额外 asm 代码而苦苦挣扎。代码针对我使用 cortex-m 和 cortex-m-rt crates 的 cortex-m4 cpu。
我可以使用 #[no_mangle] 属性删除蹦床,但我不知道如何删除/防止生成 push {r7, lr} 和 pop {r7, pc} 指令。
这是我的 PendSV 代码:
#[allow(non_snake_case)]
#[no_mangle]
pub fn PendSV() {
unsafe{
asm!("nop")
}
}
这里是生成的代码:
push {r7, lr}
mov r7, sp
nop
pop {r7, pc}
我正在寻找某种属性或编译器选项,这样我就可以将 nop 作为 PendSV 函数的一部分生成。有可能吗?
【问题讨论】: