Почему ОС не запускается на Virtual box, а на QEMU запускаеться?
-enable-kvm
, то оно тоже не будет работать.ret
в реализацию GDT::load_gdt()
и не вызывать load_tss()
то оно начинает в qemu-kvm работать:diff --git a/src/GDT/GDT_impl.s b/src/GDT/GDT_impl.s
index 4f69835abd9d..5476837f3d0a 100644
--- a/src/GDT/GDT_impl.s
+++ b/src/GDT/GDT_impl.s
@@ -2,6 +2,7 @@
.extern _ZN8SimpleOS3GDT7gdt_ptrE
_ZN8SimpleOS3GDT8load_gdtEv:
lgdt _ZN8SimpleOS3GDT7gdt_ptrE
+ ret
.global _ZN8SimpleOS3GDT8load_tssEv
_ZN8SimpleOS3GDT8load_tssEv:
Правильно ли я вообще понимаю как устроенны клавиатурные прерывания?
In the default configuration, break codes are the make scan codes with the high bit set; make codes 60h,61h,70h, etc. are not available because the corresponding break codes conflict with prefix codes (code 2Ah is available because the self-test result code AAh is only sent on keyboard initialization). An alternate keyboard configuration can be enabled on AT and later systems with enhanced keyboards, in which break codes are the same as make codes, but prefixed with an F0h scan code.
arm-none-eabi-gcc.exe echo.c -nostdlib -O2 -o echo.out
arm-none-eabi-objcopy.exe -O binary echo.out echo.bin
По-хорошему нужно явно указать компилятору, по какому адресу будет расположен код директивой -Wl,--section-start=.text=0x30400000 (последнее - требуемый адрес)
Что же сделает программа на чистом ассемблере?
Может надо сделать их объектными elf файлами, затем скомпоновать и зачистить формат?
gcc
для компиляции исходников на С (*.c
) и ассемблере (*.S
), gcc
или ld
для линковки, objcopy
для преобразования ELF-файла с выхода линковщика в бинарник.... но почему после открытия транзистора конденсатор разряжается ...?
Подключиться ты конечно можешьНет, не может, потому что вопрос не про TCP, а про UDP, который не устанавливает соединение. Т.е. чтобы хоть что-то получить в ответ, нужно сначала отправить туда что-то в правильном формате. А формат неизвестен. На случайный "мусор" сервер может ничего и не отвечать.
Возможно ли это?
Начало TEXT минус конец PAGEZERO, получается 0x104a60000 - 0x100000000 = 0x4a60000 (делта смещение)
Вот адрес ,к примеру, на котором я хочу установить breakpoint
A - T + 0x104a60000
. Я долго изучал код
пытался менять ... "0x013ded84 ldr x1, [x8, 0x250]"
Задача либо понять "1" на любое нужное число, либо сделать так чтобы количество скачиваний было равным цене товара.
adrp x8, 0x2d71000
который теперь будет не нужен. int res = str[str.Length - 1] - '0';
static void Main()
{
int n = int.Parse(Console.ReadLine());
string s = "рублей";
if (n % 10 == 1) s = "рубль";
if (n % 10 >= 2 && n % 10 <= 4) s = "рубля";
if (n % 100 >= 11 & n % 100 <= 20) s = "рублей";
Console.WriteLine("{0} {1}", n, s);
Console.ReadKey();
}
if (list == "r")
{ ...
if (list == "e") {...}
if (list == "d") {...}
}
if (list == "r") { ... }
if (list == "e") {...}
if (list == "d") {...}