Как обновить селектор сегмента данных в защищенном режиме - PullRequest
0 голосов
/ 29 января 2019

Я хочу обновить селектор сегмента данных, чтобы он указывал на другую запись в GDT.Но так как я очень новичок в сборке, я не могу сделать это в своем коде.Однако я обновил средство выбора сегмента кода, используя следующую инструкцию по сборке:

ljmp $(GDT_TABLE_INDEX), $(1f)     //This instruction simply points code segment to some other entry in GDT and move to next label.

Существуют ли аналогичные или альтернативные инструкции для обновления также средства выбора сегмента данных?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете изменить селектор сегмента данных, используя инструкцию mov.Например, если вы хотите установить ds на 0x1234, используйте:

mov $1234, %ax
mov %ax, %ds

Обратите внимание, что инструкции mov imm, sreg нет, поэтому сначала нужно переместить номер селектора в общее назначение.регистр.Вы также можете найти pop в сегментном регистре:

push $1234
pop %ds
...