Я немного запутался в использовании двоеточия в сборке x86. Я знаю, что в реальном режиме %gs:0x14
будет адресом %gs
сдвигом 4 бита слева и добавляет 0x14
. Но в защищенном режиме это одно и то же? Например, в защищенном режиме,Как интерпретировать% gs: 0x14?
movl %gs:0x14 %eax
В каком смысле %gs:0x14
доступен? Это как 0x14(%gs)
или то же, что и в реальном режиме?
Обновление: , чтобы уточнить мой вопрос, предположим, %gs = 0x1234
что такое значение% eax после инструкции movl %gs:0x14 %eax
.
Дополнительная информация:
Просто нашел этот документ полезным для функции гс и фс в другой системе http://www.akkadia.org/drepper/tls.pdf
И эта ссылка предоставляет информацию о сегменте: смещение адреса.
http://thestarman.pcministry.com/asm/debug/Segments.html
Возможный дубликат [Что делает двоеточие: среднее значение в синтаксисе GAS для сборки x86, как в% ds: (% bx)?] (Http://stackoverflow.com/questions/18736663/what-does-the-colon- mean-in-x86-assembly-gas-syntax-as-in-dsbx) –