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

📄 platform.h

📁 国内一位牛人自己开发的操作系统
💻 H
字号:
#ifndef OS_KERNEL_PLATFORM
#define OS_KERNEL_PLATFORM

#define 	ax	system_call
#define 	bx	system_call_arg1
#define 	cx	system_call_arg2
#define 	dx	system_call_arg3
#define 	si	system_call_arg4
#define 	di	system_call_arg5
#define 	bp	system_call_arg6
#define 	r7	system_call_arg7

typedef struct thread_environment REG;

static inline char get_char(void )
{
	register int p=0;
	__asm__ __volatile (
		"movl $(0x00),%%eax\n\t"
		"int $(0x82)\n\t"
		"movl %%eax,%0\n\t"
		:"=r" (p)
		:"0" (p)
	);
	return (char )p;
};

static inline int get_number(void )
{
	register int p=0;
	__asm__ __volatile (
		"movl $(0x01),%%eax\n\t"
		"int $(0x82)\n\t"
		"movl %%eax,%0\n\t"
		:"=r" (p)
		:"0" (p)
	);
	return p;
};

static inline void get_current_time(struct kernel_time *time)
{
	register struct kernel_time *t=time;
	__asm__ __volatile (
		"movl %0,%%eax\n\t"
		"int $(0x83)\n\t"
		:"=r" (t)
		:"0" (t)
	);
	return ;
};

static inline void print_string(char *str)
{
	register char *p=str;
	__asm__ __volatile (
		"movl %0,%%ebx\n\t"
		"movl $(0x00),%%eax\n\t"
		"int $(0x84)\n\t"
		:"=r" (p)
		:"0" (p)
	);
	return;
}

static inline void print_number(int number)
{
	register int p=number;
	__asm__ __volatile (
		"movl %0,%%ebx\n\t"
		"movl $(0x01),%%eax\n\t"
		"int $(0x84)\n\t"
		:"=r" (p)
		:"0" (p)
	);
	return;
}

static inline void print(char *str,int number)
{
	print_string(str);
	print_number(number);
}

static inline void set_print_thread(int thread_id)
{
	register int p=thread_id;
	__asm__ __volatile (
		"movl %0,%%ebx\n\t"
		"movl $(0x03),%%eax\n\t"
		"int $(0x84)\n\t"
		:"=r" (p)
		:"0" (p)
	);
	return;
}
#endif

⌨️ 快捷键说明

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