Что такое опция компилятора GCC для получения префикса переопределения сегмента в x86

У меня есть макет памяти (In Increasing memory addr), например:

Раздел кода (0-4k), раздел данных (4k-8k), секция стека (8k-12k), раздел CustomData (12k-16k).

Я добавил некоторые специальные массивы, структуры в разделе пользовательских данных.

Как я знаю, Сегмент сегмента данных (#DS) будет использоваться для любого кода компилятора, связанного с данными.

Таким образом, для раздела данных (4k-8k) по умолчанию будет #DS по умолчанию. За исключением некоторых str op, где ES может использоваться. Как:

mov    $0xc00,%eax
addl   $0xd, (%eax)

Но я хочу использовать селектор Extra Segment (#ES) для доступа к CustomData. Я бы определил новую запись GDT для ES с разными Base и Limit. как:

mov    $0x3400,%eax
addl   $0xd, %es:(%eax)

Итак, мой вопрос:

Есть ли у GCC какой-либо флаг компилятора x86, который может использоваться для указания компилятору, который использует #ES для доступа к коду раздела CustomData.?

Значит, флаг компилятора, который будет генерировать код с использованием #ES для раздела CustomData.?

Спасибо заранее!

Ответы