Вопросы по теме 'osdev'

Перенос проекта ядра с DJGPP на MinGW
Попытка скомпилировать проект ядра C++ с помощью MinGW и NASM (ранее DJGPP и NASM). На самом деле тоже пробовали Cygwin с точно такими же результатами ниже: Сначала просто заменил \DJGPP\bin на \MinGW\bin . Получил следующую ошибку ссылки:...
449 просмотров
schedule 18.07.2022

x86 Видеопамять очистить экран вылет
В настоящее время я пишу 32-битное ядро ​​​​для своей операционной системы, но столкнулся с проблемой. При попытке очистить экран с помощью метода из здесь происходит сбой bochs со следующим сообщением: [CPU ]prefetch: getHostMemAddr...
806 просмотров
schedule 02.05.2024

прерывание 10h не отображает строку
У меня возникла проблема при запуске загрузчика операционной системы на VMWare и Bochs. Загрузчик должен отображать строку через int 10h , но он просто печатает цвет фона без каких-либо символов. Цвет задавался значением bx . Код здесь:...
339 просмотров
schedule 18.09.2022

Сценарий компоновщика неправильно устанавливает источник
Я работаю над связыванием своего ядра С++ с моей сборкой x86 Stage2, и оно связывается без каких-либо ошибок, но проблема в том, что когда я загружаю свою ОС в виртуальной коробке, она не переходит на Stage2, что заставляет меня поверить, что что-то...
182 просмотров
schedule 10.10.2022

Включите загрузчик для загрузки второго сектора USB
Я изучаю язык ассемблера. Я написал простой загрузчик. После проверки это не сработало. Вот мой код: [bits 16] [org 0x7c00] jmp start data: wolf_wel_msg db 'Welcome to Bootloader!!!',0x0D,0x0A,0 wolf_kernel_load db 'Loading...
1689 просмотров
schedule 24.03.2024

Двойная ошибка IRQ
У меня проблема с созданием моего первого драйвера (PIT). Проблема ясно объяснена в этом видео, которое я записал ранее: https://www.youtube.com/watch?v=hjvTtVbaics&feature=youtu.be . Позвольте мне сначала показать мой драйвер таймера:...
144 просмотров
schedule 03.08.2022

Ошибка: недопустимая комбинация кода операции и операндов - nasm
Я создаю небольшую процедуру для загрузки регистра idtr инструкцией lidt . Я создал этот код - global load_idt load_idt: mov eax, esp add eax, 4 lidt eax ;<-----------------LINE 9 ret Но когда я компилирую это с...
1094 просмотров
schedule 27.12.2023

Как вы получаете символы из компоновщика Windows?
Мне интересно, есть ли способ вывести символы из компоновщика Windows. Я знаю, что он выдаст карту символов, но мне нужно что-то, что я могу загрузить в отладчике. Если компоновщик не выводит символы, могу ли я получить их из существующего файла...
57 просмотров
schedule 29.10.2022

Есть ли способ использовать математические выражения в константах сборки gnu?
Каков правильный синтаксис сборки gnu для выполнения следующих действий: .section .data2 .asciz "******* Output Data ********" total_sectors_written: .word 0x0 max_buffer_sectors: .word ((0x9fc00 - $data_buffer) / 512) # <=== need help here...
1207 просмотров
schedule 09.08.2022

Почему мой переключатель на 16-битную функцию, написанную на ассемблере, не возвращается в мое ядро?
Я делаю небольшую операционную систему, и я хочу что-то делать с видеорежимами (например, получать информацию vesa, устанавливать видеорежим), а это очень сложно сделать в 32-битном режиме. Поэтому я решил вернуться к 16-битному режиму и написал...
83 просмотров
schedule 25.03.2024

Как процессор x86 может получить инструкцию сразу после загрузки GDT загрузчиком?
При обычном написании простого загрузчика для x86 у нас есть следующий код для загрузки GDT и выполнения дальнего перехода (обратите внимание, что CS равен 0x0 перед выполнением следующего кода): lgdt gdtdesc movl %cr0, %eax orl $1, %eax movl...
56 просмотров
schedule 12.05.2024

Функция C пользовательского ядра x86, обращающаяся к char *, дает случайное значение
Я пишу собственное ядро ​​для x86 на C. Всякий раз, когда я пытаюсь получить доступ к значению из char* , я получаю случайное значение. void test(char input[]) { char* video_memory = (char*) 0xb8000; *video_memory = input[0]; } void...
46 просмотров
schedule 25.05.2024

Rust gnu-asm, дальний прыжок в реальном режиме
.intel_syntax noprefix smp_trampoline: # clear the direction flag (e.g. go forward in memory when using # instructions like lodsb) cld # disable interrupts cli # zero data segment xor ax, ax mov ds, ax # Set the...
44 просмотров
schedule 27.12.2023