Использование gs и fs при кодогенерации gcc

Тема в разделе "WASM.OS.DEVEL", создана пользователем NoName, 7 дек 2011.

  1. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Я строю большой исполняемый файл для своей системы где каждому объекту (в конфиге линкера ld) ставлю адрес, его имя, флаги. В конечном счете имею некоторые rom объекты (секции) которые загружаю в соответствующие сегмент интел (без страничной адресации).
    Нужно сделать так чтобы все обращения к rom объектам (которые в сегментах только для чтения (для простоты допустим в одном)) шли через сегментные регистры fs и gs (ds только для ram), как этого можно достичь?
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    readbyte/writebyte и т.п., copyfrom/copyto?
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    NoName
    Точно как и в Delphi. Переопределяешь оператор []
    Присваиваешь своему объекту указатель на нужные данные.
    И работаешь с байтами через [].
    Внутри определения оператора [] используешь ассемблерную вставку с fs или gs.
     
  4. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Это все понятно. Мне нужен вариант когда компилятор делает это сам для данных класса/типа ром. В последней версии гцц 4.7.0 есть какая-та мало понятная опция -mfsgsbase вот бы еще узнать о ней.
    Что-то есть в ваткоме, но опять же непонятно что точно.
    + нужно чтобы кодогенератор понимал что база ds, es и cs не совпадает с ss. А то так наяривают...
     
  5. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    актуально