Size: a a a

pro.osdev — детский сад

2021 January 13

d

disba1ancer in pro.osdev — детский сад
Berkus Decker
Я вчера вгрызся в армовскую доку по GIC, да, возможно у меня таки появятся прерывания)
а почему их нет?
источник

BD

Berkus Decker in pro.osdev — детский сад
disba1ancer
а почему их нет?
не добрался пока
источник

s

salvoroni in pro.osdev — детский сад
Berkus Decker
переход в 64 бита должен вызываться отдельно но до него код не доходит )
Доходит
Я сделал вывод строки после перехода в 64
источник

s

salvoroni in pro.osdev — детский сад
disba1ancer
а страницы правильно замапить не забыл?
Честно говоря не уверен
Вы про связывание в ld? Или про gdt?
источник

BD

Berkus Decker in pro.osdev — детский сад
salvoroni
Доходит
Я сделал вывод строки после перехода в 64
но …

код говорит иное:

после инит_32 https://github.com/salvoronis/osDev/blob/master/switch_to_32.asm#L25

BEGIN_PM проваливается в BEGIN_64 не меняя режима
https://github.com/salvoronis/osDev/blob/master/bootstrap.asm#L43-L53
источник

s

salvoroni in pro.osdev — детский сад
Ой
А вы правы
Я же оттуда не вернулся
Спасибо, не заметил
Но почему тогда работают функции с 64 битовыми регистрами?
источник

s

salvoroni in pro.osdev — детский сад
Berkus Decker
я говорил не выебываться с 20 файлами и сунуть эти 100 строчек в один, но кажется желание оверинжинирить пересилило
Все же стоит поместить все в 1 файл
А то правда сильно путает
Писал просто так, как было описано в статье
источник

BD

Berkus Decker in pro.osdev — детский сад
salvoroni
Ой
А вы правы
Я же оттуда не вернулся
Спасибо, не заметил
Но почему тогда работают функции с 64 битовыми регистрами?
а чего бы им не работать, у вас же там 32 битные адреса, а регистры по факту остались 32-битными
источник

BD

Berkus Decker in pro.osdev — детский сад
если я правильно помню интель то в 32-bit eax будет без size-prefix, а в 64-бит rax будет без size-prefix, поэтому оно просто осталось по факту eax
источник

s

salvoroni in pro.osdev — детский сад
Berkus Decker
если я правильно помню интель то в 32-bit eax будет без size-prefix, а в 64-бит rax будет без size-prefix, поэтому оно просто осталось по факту eax
https://github.com/salvoronis/osDev/blob/master/switch_to_32.asm#L42

Тут тоже порежет значение получается?
источник

s

salvoroni in pro.osdev — детский сад
А не
Он же туда не доходит
Все верно
источник

BD

Berkus Decker in pro.osdev — детский сад
источник

d

disba1ancer in pro.osdev — детский сад
Berkus Decker
если я правильно помню интель то в 32-bit eax будет без size-prefix, а в 64-бит rax будет без size-prefix, поэтому оно просто осталось по факту eax
для 64 бит инструкций нужен спец префикс
источник

DF

Dollar Føølish in pro.osdev — детский сад
В Лонг моде тоже?
источник

d

disba1ancer in pro.osdev — детский сад
Dollar Føølish
В Лонг моде тоже?
оно вроде в 32 бит режиме не доступно вообще, а в лонгмоде всегда
источник

a

alnyan in pro.osdev — детский сад
Без REX.W даже в лонг моде будет eax вместо rax
источник

DF

Dollar Føølish in pro.osdev — детский сад
Круто спасибо
источник

DF

Dollar Føølish in pro.osdev — детский сад
Как говорил александреску use 32 bit data and 64 bit code кек
источник

DF

Dollar Føølish in pro.osdev — детский сад
Сраный х86
источник

BD

Berkus Decker in pro.osdev — детский сад
источник