iflib.c

来自「可重构加速部件」· C语言 代码 · 共 58 行

C
58
字号
#include "iflib.h"#define	USEMOVQvoidwrite64(int64 twrite, char *addr){#ifdef	USEMOVQ	__asm__ __volatile__(	"		movl %1,%%ecx\n		movq %0,%%mm0\n		movq %%mm0,(%%ecx)\n	"	:	: "m" (twrite), "g" (addr)	);#else	*((int *)(addr + 4)) = twrite.w[1];	*((int *)addr) = twrite.w[0];#endif}voidread64(int64 *data, char *addr){#ifdef	USEMOVQ	int64	tread;	__asm__ __volatile__(	"		movl %1,%%ecx\n		movq (%%ecx),%%mm1\n		movq %%mm1,%0\n	"	: "=m" (tread)	: "g" (addr)	);	data->w[0] = tread.w[0];	data->w[1] = tread.w[1];#else	data->w[0] = *((int *)addr);	data->w[1] = *((int *)(addr + 4));#endif}voidwrite32(int twrite, char *addr){	*((int *)addr) = twrite;}voidread32(int *data, char *addr){	*data = *((int *)addr);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?