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.

2009年12月24日 星期四

GCC inline assembly

Assembly is not very friendly. But I should verify many instructions set, such as MMX, SSE, SSE2 and so on. I hate assembly, buuuuuu~

It's a good news that gcc's inline assembly is very helpful. HERE is a very useful HOWTO.

OpenMP over Multicore PC

Now my work is writing a program to verify each core of CPU's instructions. Thus, I should find a way to make sure that the instructions are running on specified core.

MPICH was found firstly, but soon I recognize it works on distributed memory, such as cluster. It's not my goal.

Multicore PC is unified memory system, and OpenMP is a choice for the system. It's bulit-in recently gcc(4.1.1 or later? not sure). Just add option -fopenmp while compiling and have fun with openmp.

2009年12月23日 星期三

useful vim cheat sheet from vgod's blog

Vim cheat sheet.

Divine code from vgod's blog( trad. chinese)

追求神乎其技的程式設計之道  by vgod.

重新啟用

雖然不確定到底會不會用就是了。這邊以後會拿來練習英文 and write some works' notes. I should have some place to put down those notes for future use.

Well, just wait and see.