此代码适用于 -O 标志,但不适用于没有 -O 标志,也不适用于 -O2 和 -O3 标志:
void putc(char c)
{
static char *video = 0xb8000;
*video = c;
//video+=2;
}
void puts(char * s)
{
for(;*s;) putc(*s++);
}
void start_kernel(void)
{
putc('a');
for(;;);
}
这段代码也没有显示任何标志,带有 -O 标志和 -O2 标志,尽管在将字符写入缓冲区后它相差一行:
void putc(char c)
{
static char *video = 0xb8000;
*video = c;
video+=2;
}
void puts(char * s)
{
for(;*s;) putc(*s++);
}
void start_kernel(void)
{
putc('a');
for(;;);
}
我正在使用 GRUB 加载我的“内核”,所以我很确定 A20 线路已解锁并且......
我不知道发生了什么...