⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 the_lib.c

📁 阿基米德操作系统的源代码
💻 C
字号:

///////////////////////////////////////////////////////////////////
char * strcpy(char * dest, const char * src){	__asm__ ("cld\n"			 "1:\tlodsb\n\t"			 "stosb\n\t"			 "testb %%al,%%al\n\t"			 "jne 1b"		    :
		    :"S" (src),"D" (dest));	return dest;}int strcmp(const char * cs, const char * ct){	int __res;
	__asm__ ("cld\n"			 "1:\tlodsb\n\t"			 "scasb\n\t"			 "jne 2f\n\t"			 "testb %%al,%%al\n\t"			 "jne 1b\n\t"			 "xorl %%eax,%%eax\n\t"			 "jmp 3f\n"			 "2:\tmovl $1,%%eax\n\t"			 "ja 3f\n\t"			 "negl %%eax\n"			 "3:"		    :"=a" (__res)
		    :"S" (cs),"D" (ct));	return __res;}void * memset(void * s, char c, int count){	__asm__ ("cld\n\t"			 "rep\n\t"			 "stosb"		    :
	        :"a" (c),"D" (s),"c" (count));	return s;}
unsigned char get_gs_byte(const char * addr)
{
	unsigned char _v;

	__asm__ ("movb %%gs:%1,%0"
			:"=r" (_v)
			:"m" (*addr));
	return _v;
}

void put_gs_byte(char val,char * addr)
{
	__asm__ ("movb %0,%%gs:%1"
			:
			:"r" (val),"m" (*addr));
	return;
}

///////////////////////////////////////////////////////////////////
unsigned long get_gs_long(const unsigned long * addr)
{
	unsigned long _v;

	__asm__ ("movl %%gs:%1,%0"
			:"=r" (_v)
			:"m" (*addr));
	return _v;
}

void put_gs_long(unsigned long val,unsigned long * addr)
{
	__asm__ ("movl %0,%%gs:%1"
			:
			:"r" (val),"m" (*addr));
	return;
}

⌨️ 快捷键说明

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