我已经编写了一个非常简单的内核,它在GRUB的帮助下加载到QEMU中。我可能在指针计算方面有问题,但无法真正找出问题所在。
下面的代码按预期工作,它打印给定的字符。
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