Size: a a a

Ассемблер

2020 December 19

DR

Dima Richev in Ассемблер
mov bp, sp

Переносим стэк (куда поклали GDT_LIMIT и GDT_BASE) в EBP

Далее загружаем таблицу
источник

D

Den in Ассемблер
Dima Richev
lgdt = load gdt = load global descriptor table
ну я понял, там это написано, она грузит регистр этот 48 битный в стэк чтоли без создания фрейма?
источник

D

Den in Ассемблер
все я понял, кажется сначала пушим в стек данные а lgdt уже загружает их в этот 48 бит регистр, долго доходит до меня :)
источник

DR

Dima Richev in Ассемблер
Да
источник

D

Den in Ассемблер
Ну вот уже кое что, спасибо!
источник

D

Den in Ассемблер
Вроде не сложно, надо попробовать включить это а что дальше делать?
источник

DR

Dima Richev in Ассемблер
А что ты хочешь сделать?
источник

D

Den in Ассемблер
там 65535 дескрипторов по 8 байт которые описывают что? потоки? сегменты памяти? как к ним обращаться?
источник

DR

Dima Richev in Ассемблер
GDTR + смещение
источник

DR

Dima Richev in Ассемблер
GDTR - Global Descriptor Register
источник

A

Aleksandr in Ассемблер
Den
там 65535 дескрипторов по 8 байт которые описывают что? потоки? сегменты памяти? как к ним обращаться?
максимум там около 8000 дескрипторов может быть, никаких 65535
источник

D

Den in Ассемблер
Aleksandr
максимум там около 8000 дескрипторов может быть, никаких 65535
ну там написано 8192 а максимум 65535
источник

A

Aleksandr in Ассемблер
там не это написано
источник

A

Aleksandr in Ассемблер
там аписано что максимум - 8192, благодаря тому что лимит 0xffff
источник

A

Aleksandr in Ассемблер
к дескрипторам идет обращение по смещению относительно начала таблицы, смещение хранится в 16-битном регистре. если максимум регистра - 65535, а размер одного дескриптора - 8, то максимум - 65535/8
источник

A

Aleksandr in Ассемблер
на самом деле даже (65535/8)-1
источник

D

Den in Ассемблер
Aleksandr
там аписано что максимум - 8192, благодаря тому что лимит 0xffff
а понял спасибо, а так бы сам вот не понял, как то мутно написано
источник

D

Den in Ассемблер
Aleksandr
на самом деле даже (65535/8)-1
а почему -1 там же не 65536?
источник

A

Aleksandr in Ассемблер
потому что первый дескриптор не используется
источник

A

Aleksandr in Ассемблер
не знаю почему так, но вот так вот
источник