gpt4 book ai didi

c - volatile 指令的执行

转载 作者:行者123 更新时间:2023-11-30 18:28:30 24 4
gpt4 key购买 nike

int __attribute__ ((noinline)) mySystemCall (uint32 Exception, uint32 Parameter)
{
#ifdef PROCESSORX
__asm__ volatile ("sc")
#else
__asm__ __volatile__ ("mov R0, %0; mov R1, %1; svc 0x0 " : : "r" (Exception), "r" (Parameter));

}

编译器如何翻译指令(asm volatile (“sc”))?

为什么有些参数作为字符串传递,而有些则不是(例如:

 __asm__ __volatile__("rdtsc": "=a" (a), "=d" (d) ))

最佳答案

C 标准未指定内联汇编。我假设这是 gcc 的代码并且兼容,那么您应该看看 the manual .

至于您的具体问题:

How does the compiler translate the instruction (asm volatile ("sc"))?

在此上下文中, volatile 指示编译器必须包含汇编代码段,即使编译器无法看到其行为实际需要的原因该程序。第一个字符串参数中的任何内容都是目标平台的文字汇编代码。

Why are some arguments passed as strings and some are not

这只是部分语法,请参阅我上面列出的手册。内联汇编可以将输入和输出参数“绑定(bind)”到 C 变量,还可以告诉编译器哪些寄存器被汇编代码段“破坏”(除其他外)。

关于c - volatile 指令的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46925862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com