0

此代码适用于 -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 线路已解锁并且......

我不知道发生了什么...

4

0 回答 0