Я новичок в программировании операционных систем и читаю книгу, которая помогает создать загрузчик для моей операционной системы C ++. Загрузчик работает, но мой код на C ++ не работает. Я пытаюсь распечатать текст в ячейку памяти 0xb8000, которая хранится в коротком указателе. При итерации по переданному указателю char значения кажутся неправильными. Он не распечатывает Hello. Он просто распечатывает целую кучу символов деления на сером фоне. Изображение vm . Что я могу сделать, чтобы это исправить? Я использую g cc и ld nasm mingw для компиляции всего.
int printf(const char *str);
extern "C" int kernel_main()
{
printf("Hello");
return 0;
}
int printf(const char *str)
{
unsigned short *VideoMemory = (unsigned short *)0xb8000;
int i = 0;
for (int i = 0; str[i] != '\0'; ++i)
{
VideoMemory[i] = str[i];
}
return i;
}