17得票1回答
什么是clobber?

Clang的TargetInfo类有一个名为getClobbers的方法: 返回一个LLVM格式的特定目标的clobber字符串。 那么,什么是clobber呢?

17得票1回答
如何指示内联ASM参数所指向的内存可以被使用?

考虑以下小函数:void foo(int* iptr) { iptr[10] = 1; __asm__ volatile ("nop"::"r"(iptr):); iptr[10] = 2; } 使用gcc编译,编译结果如下:foo: nop ...

17得票7回答
GCC移除内联汇编代码

似乎gcc 4.6.2会从函数中删除它认为未使用的代码。 test.cint main(void) { goto exit; handler: __asm__ __volatile__("jmp 0x0"); exit: return 0; } 主函数 main() ...

17得票8回答
如何将C++变量存储在寄存器中

关于寄存器变量的存储,我希望能得到一些澄清:如果我们在代码中声明了一个寄存器变量,有没有办法确保它只会被存储在寄存器中?#include<iostream> using namespace std; int main() { register int i = 10;//...

17得票2回答
Retq指令,它返回到哪里?

我不明白汇编指令retq返回到哪里。 我知道当我的普通代码执行时,它会返回堆栈中指定的地址。但它如何知道返回地址在堆栈中的位置? 简而言之,它是使用rbp还是esp来查找堆栈中的地址?

17得票1回答
Clang生成的内联汇编代码是否有错误?

我有一些C代码: #include "stdio.h" typedef struct num { unsigned long long x; } num; int main(int argc, char **argv) { struct num anum; anu...

16得票2回答
rdtscp的哪个内嵌汇编代码是正确的?

免责声明:无法用言语描述我对AT&T风格语法的厌恶程度。 我有一个问题,希望是由寄存器破坏引起的。如果不是,那我的问题就更大了。 我使用的第一个版本是 static unsigned long long rdtscp(void) { unsigned int hi, lo...

16得票4回答
使用GCC的内联汇编进行直接C函数调用

如果你想从内嵌汇编中调用一个C/C++函数,可以这样做:void callee() {} void caller() { asm("call *%0" : : "r"(callee)); } 接下来,GCC将会生成类似这样的代码:movl $callee, %eax call *%ea...

16得票2回答
在LLVM中调用fsincos指令比调用libc的sin/cos函数慢吗?

我正在开发一种使用LLVM编译的语言。出于兴趣,我想进行一些微基准测试。其中一个测试是在循环中运行数百万次正弦/余弦计算。伪代码如下:var x: Double = 0.0 for (i <- 0 to 100 000 000) x = sin(x)^2 + cos(x)^2 ret...

15得票6回答
Java中的代码注入/汇编内联?

我知道Java是一种安全的语言,但在需要进行矩阵计算时,我可以尝试一些更快的东西吗? 我正在学习C++中的__asm{}、Digital-Mars编译器和FASM。我想在Java中做同样的事情。如何在函数中嵌入汇编代码?这是否可能? 类似于以下内容(使用CPU的AVX支持,对数组的所有元素...