Вопросы по теме '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