Я писал бут сектор для ядра и сделал такую функцию для этого:
SWITCH_32:
cli
lgdt [gdt_descriptor]
mov eax, cr0
or eax, 0x1
mov cr0, eax
far_jump_to_kernel:
db 0x66
db 0xEA
dd 0x7777; любой адрес для перехода
dw 0x0008; селектор
У меня не вышло сделать дальний прыжок с изменением cs,
прямое забитие байтов в код не помогло и
не получилось так:
jmp 0x8:
addr
В отладчике я видел это:
(gdb не определил инструкции только)
то есть примерно после этих инструкций началось исполнение на рандомном адресе.
Я не нашел в интернете ничего про это, что попробовать сделать? может сегментные регистры проверить, таблицу дескрипторов? Прощу прощение если вопрос тупой