📄 platform.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 + -