gpt4 book ai didi

c++ - 在什么情况下我想在 C/C++ 代码中使用内联汇编代码

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

我刚刚读到汇编代码可以直接包含在 C/C++ 程序中,例如,

__asm statement
__asm {
statement-1
statement-2
...
statement-n
}

我只是想知道在什么情况下在 C/C++ 中包含汇编代码会有用。

最佳答案

在 C/C++ 中使用汇编的最重要的地方(可能也是唯一有意义的地方)是嵌入式系统开发,它是访问某些外设的唯一方法或需要这样做的地方因为无论编译标志是什么,我们都需要这种精确的指令顺序。最后一种情况最常见于引导加载程序或关键操作系统部分(例如上下文切换)。

我想到的例子是访问 MicroBlaze 处理器中的特殊寄存器:甚至 Xilinx recommends accessing those registers using assembly (据我所知,也没有其他方法)因为没有其他方法

通过将其嵌入到 C 中,它将像这样使用:

unsigned long get_msr(void) {
unsigned long msr;
asm ("mfs %0, rmsr" : "=d" (msr)); // note: this is a gnu extention
return msr;
}

另一个例子是implementation for a context switch ARM 提供的也使用汇编(尽管在本例中没有嵌入到 C 代码中)。

关于c++ - 在什么情况下我想在 C/C++ 代码中使用内联汇编代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024034/

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