Печать на экране основы ядра - PullRequest
0 голосов
/ 08 июля 2019

Этот код работает с флагом -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 разблокирована и ...

Я не знаю, что происходит ...

...