uefi_call_wrapper
не сохраняет регистры, а код в __scankeys
хранит данные в rbx и rcx. Твоя непосредственная проблема именно в этом, проверяется элементарным добавлением push rbx ; push rcx
в начало макроса uefi_call_wrapper
и pop rcx ; pop rbx
в конец. Только усложняет код компилятора, разве нет?
Просто не понимаю зачем
он добавляет пробелы и дефисы
search domains
в настройках IPv4 ls /etc/resolv*
cat /etc/resolv.conf
/etc/resolv.conf
и замени его пустым файлом. Я не знаю, как это реализовать в коде
mov ax, 1 ; mov dx, 0
.mov ax, [bx] ; cwd
.mov ax, [bx] ; mov dx, [bx + 2]
, в зависимости от того, где и в каком виде находится делимое.это и тупой поймет
lidt[rcx]
extern "C" void LoadIDT(uint64_t); //Вот в типе данных аргумента я практически 100% наложал, не знаю, что там должно быть
void *
:extern "C" void LoadIDT(void *);
...
LoadIDT(_idt);
Вычитал из соглашения о вызовах, что указатели передаются…
movq _idt@GOTPCREL(%rip), %rdi
call LoadIDT@PLT
А где команда enter?
push %rbp ; mov %rsp, %rbp
Откуда именно 4 слота?
-O0
, поэтому для всех переменных он выделил место на стеке. range
и div
-- это локальные переменные в этой функции, а min
и max
были переданы в регистрах, поэтому на стеке размещены их копии. Тогда странно.
Объясняю
Иван Четчасов, это важная часть, ты её не добавил.