qt __asm__输入参数是指针
时间: 2023-10-23 16:13:07 浏览: 103
asm_java.rar_asm_java
在 Qt 中,`__asm__` 是用于嵌入汇编代码的关键字。如果汇编代码需要访问 C++ 中的变量,那么这些变量必须作为指针传递给汇编代码。
例如,假设我们有一个 C++ 函数如下:
```cpp
int foo(int a, int b)
{
int c;
__asm__ (
"mov %1, %%eax;"
"add %2, %%eax;"
"mov %%eax, %0;"
: "=r" (c) // 输出操作数
: "r" (a), "r" (b) // 输入操作数
: "%eax" // 受影响的寄存器
);
return c;
}
```
这个函数将 `a` 和 `b` 相加,然后返回结果。汇编代码使用 `%1` 和 `%2` 分别表示 `a` 和 `b`,这些值通过在 `__asm__` 块之前和之后的冒号语法中指定的输入和输出操作数传递。由于汇编代码需要修改 `%eax` 寄存器的值,因此在冒号语法中将其标记为受影响的寄存器。
请注意,在使用 `__asm__` 关键字时应该谨慎,因为它可以使代码难以维护和移植。
阅读全文