我编写了一个非常简单的内核,它在 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