Я написал очень простое ядро, которое загружается внутри QEMU с помощью GRUB. У меня, вероятно, проблема с вычислением указателя, но я не могу понять, что не так.
Следующий код работает, как и ожидалось, он печатает заданный символ.
char* video = 0xb8000 + 0;
char* color = 'A';
*video++ = c;
*video++ = color;
Однако, когда я изменяю вычисление указателя видео на это, он не работает, на экране ничего не появляется:
int pos = 0;
char* video = 0xb8000 + pos;
Но когда я делаю переменную pos unsigned int, она работает неправильно, а когда я делаю ее 1, она работает как первая, но почему она должна быть 1?
unsigned int pos = 1;
char* video = 0xb8000 + pos;
Мои флаги C: CFLAGS = -std=c99 -pedantic -Wall -nostdlib -ffreestanding -g
char color = 'A'
(вместо указателя)? - person Martin R   schedule 08.09.2013