以前工作环境是用PowerPC,很少看x86的汇编,所以对它不太熟悉。今天测试一个效率问题随便看了一下,有一些疑问: volatile unsigned int rVal; volatile unsigned int wVal; void Work(void) { wVal = rVal; } int main(int argc, char *argv[]) { unsigned int i; // unsigned int count = (2 == argc) ? atoi(argv[1]) : 10000; unsigned int count = 0xffffffff; for (i = 0; i < count; ++i) { ...
如下指令有什么问题? float root = 0.f; float x = 0; __asm__ __volatile__( "sqrtss %X1, %%xmm0\n\t" "movss %%xmm0, %X0\n\t" : "=X" (root) : "X" (x) : "%xmm0" ); 我编译的时候爆出“error: unknown register name '%xmm0' in 'asm'” 是不是xmm0寄存器不能用在嵌入汇编的“修改”部分,即第2...
今天看到了gcc的一个特性是关于error和warning 指令。 写了如下程序。 int main() { int i=10; #error " the bellow is right\n" printf("hello world\n"); } 不知道是对error指令的用法不理解还是别的, 程序编译后说error行由问题。 请高人给指点下这方面的用法。 谢谢
为了测试gcc中,对嵌入汇编指令的c/c++代码,偶写了一段如下代码作测试用: __asm__("mov ah, al"); gcc编译时的提示错误为: /tmp/ccldQTM.s:Assembler messages: /tmp/ccldQTM.s:16:Error:too many memory reference for 'mov' 什么原因,请高手解释: 随便问一下:Linux有没有和M$ NT内核系统的运行级的概念,即不能直接outp()之类的对硬件端口直接访问,Linux有没有这个保护机制??? 等……
我是新手,请问:哪位老大有gcc的参考指令? 具体一点就是:我现在手上写了一个标准的"hello world 的程序,命名为:a.c 用gcc a.c也通过了,请问怎么产生可执行文件,或者是我能把我的可执行文件 在命令提示符下打出来.就可以看到结果?谢谢
我用gcc -o test test.c编译test.c为什么执行test文件时没有任何结果, 而使用gcc -o abc test.c则可以得到正确结果? 是不是指定的文件名不能与源文件相同?
以下gcc包分别都有些什么作用: gcc-3.2.2-5.i386.rpm; gcc-c++3.2.2-5.i386.rpm; gcc-g77-3.2.2-5.i386.rpm; gcc-gnat-3.2.2-5.i386.rpm; gcc-java-3.2.2-5.i386.rpm; gcc-objc-3.2.2-5.i386.rpm. 弄了好久也弄不明白..