У меня есть макет памяти (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.?
Спасибо заранее!