ec_arm_linux.c

来自「分别在x86」· C语言 代码 · 共 29 行

C
29
字号
uint32 cq_ntohl(uint32 value){	uint32 tmp;	asm volatile ("EOR %1, %0, %0, ROR #16\n"		"BIC %1, %1, #0xff0000\n"		"MOV %0, %0, ROR #8\n"		"EOR %0, %0, %1, LSR #8\n"		: "=r" (value), "=r" (tmp)		: "0" (value), "1" (tmp));	return value;}void cq_ntohl_array(uint32* arr, uint32 num){	uint32 tmp;	uint32 value;	asm volatile (""		"next:\n"		"ldr %2, [%0]\n"		"EOR %3, %2, %2, ROR #16\n"		"BIC %3, %3, #0xff0000\n"		"MOV %2, %2, ROR #8\n"		"EOR %2, %2, %3, LSR #8\n"		"str %2, [%0], #4\n"		"subs %1, %1, #1\n"		"bne next\n"		: "=r" (arr), "=r" (num), "=r" (value), "=r" (tmp)		: "0" (arr), "1" (num), "2" (value), "3" (tmp));}

⌨️ 快捷键说明

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