2009年12月29日 星期二

Some GCC macro examples for inline assembly (1)

Here is a very simple one:
#define FUNC(func, ret) \
     asm ("asm_func" \
     : "=a" (ret) \
     : "a" (func) \
);
a means ax/eax/rax/r0, and we can exchange a to b,c,d or r to indicate ebx,ecx,edx or any general purpose registers. And we can use %0 to indicate "=a" (ret), it means to output ax/eax/rax to memory space ret pointed, and %1 to indicate "a" (func), move the value of func to ax/eax/rax.

Ref: GCC inline assembly HOWTO.
The external link is very useful, but not latest reference. I will continue showing some example not related with my works.

沒有留言: