ChinaUnix.net
相关文章推荐:

gcc 内嵌汇编

请问代码中内嵌汇编是什么意思,那里有文档可以看。 static __inline__ int atomic_sub_and_test (int i, atomic_t * v) { unsigned char c; __asm__ __volatile__ ("lock ; subl %2,%0; sete %1":"=m" (v->counter), "=qm" (c):"ir" (i), "m" (v->counter):"memory"); return c; }

by taomi - C/C++ - 2008-01-21 19:41:12 阅读(1716) 回复(3)

相关讨论

Intel VC 可以编译成功 [code]void toggleLed(unsigned char ledMask) { #define P2LTCH 0xFF5E /* The address of the I/O register. */ asm { mov dx, P2LTCH /* Load the address of the register. */ in al, dx /* Read the contents of the register. */ mov ah, ledMask /* Move the ledMask into a register. */ xor al, ah ...

by shihyu - C/C++ - 2007-07-27 20:12:15 阅读(2568) 回复(7)

我用gcc调试这个程序的时候会出错 提示内嵌汇编的那一行说:test.c:7: error: expected ‘)’ before ‘:’ token 请问这是怎么回事? /**/ int main (int _argc,char* _argv[]) { int * _p = (int*)_argc; (*_p) = 9999; _asm_ ("":::"memory"); if (* _p==9999) return 5; return (* _p); }

by neilshi - C/C++ - 2006-08-22 18:47:24 阅读(1031) 回复(2)

VC内嵌汇编intel格式: _asm { mov ecx, object_pointer call Class::MemberFunc } 以上是调类成员函数的代码,要是用gcc编译,对应的AT&T格式的汇编代码要怎么写? __asm__ volatile("call *%0;": :"m"(Vector3::Normalize)); gcc下面Class::MemberFunc这种写法根本通不过,说不是静态函数不能这么写。 另外再问一下,gcc的naked属性到底怎么用?VC的话__declspec(naked)就可以了,而gcc用__attribute__((naked))后...

by w_anthony - C/C++ - 2008-09-25 13:01:01 阅读(4693) 回复(10)

double *rf; double asmtest() { asm( "movl rf, %%ebx " : : : ); } 如上面的情况, 由于rf是一个全局变量,编译和链接没有问题,但是当 dlopen 的时候会 发生错误,提示: cannot restore segment prot after reloc: Permission denied 问题解决了, 顺便上传个 AT&T 语法的 Sun汇编手册 希望对大家有用 [ 本帖最后由 GFree 于 2008-12-18 14:25 编辑 ]

by GFree - C/C++ - 2008-12-19 15:57:10 阅读(2098) 回复(3)

16位有符号数除法 [code]div16_t divs16_s16(int16_t val0,int16_t val1) { div16_t result; asm( "movw r24,%A1" "\n\t" "movw r22,%A2" "\n\t" "mov r2,r25" "\n\t" "sbrc r2,7" "\n\t" "rcall 1f" "\n\t" "mov r3,r23" "\n\t" "sbrc r3,7" ...

by ATmega32 - C/C++ - 2007-07-12 16:37:54 阅读(1407) 回复(2)

gcc 内嵌汇编时用什么编译参数? 有哪些参数?我的机器是i386

by chzht001 - C/C++ - 2006-08-09 17:41:00 阅读(1161) 回复(0)

众所周知,VC下面的内嵌汇编很弱智,完全是一句对应一条指令,如果没有对应得上的,那就无法通过编译,而gcc比较“聪明”一点,会自己利用寄存器来将一条语句切成多条,以使得编译通过。 现在VC下面有这样的汇编: _asm { lea ecx, object //传this指针 call object_type::memberfunc //调用类成员函数,直接call地址 } 而gcc下面是类似于: __asm__ volatile("\ lea %0, %%e...

by w_anthony - C/C++ - 2008-10-03 12:23:30 阅读(16283) 回复(60)

[code] static inline char * strcpy(char * dest,const char *src) { int d0, d1, d2; __asm__ __volatile__( "1:\tlodsb\n\t" "stosb\n\t" "testb %%al,%%al\n\t" "jne 1b" : "=&S" (d0), "=&D" (d1), "=&a" (d2) : "0" (src),"1" (dest) : "memory"); return dest; } [/code] 不太明...

by prc - C/C++ - 2006-11-29 11:41:16 阅读(989) 回复(1)
by alpbrook - C/C++ - 2006-10-19 11:45:49 阅读(1089) 回复(0)

vc 中的汇编代码 int a = 1, b = 2, c = 3; __asm { push a; push b; push c; pop b; pop a; pop c; } 转换成gcc的asm代码,要如何写?谢谢 [ 本帖最后由 okyzx 于 2007-2-3 23:23 编辑 ]

by okyzx - C/C++ - 2007-02-24 20:18:41 阅读(3261) 回复(14)