Какой же размер?

Тема в разделе "WASM.ASSEMBLER", создана пользователем KIV, 3 окт 2010.

  1. KIV

    KIV Member

    Публикаций:
    0
    Регистрация:
    16 июл 2009
    Сообщения:
    231
    Команда fxsave сохраняет состояние FPU в указанную область памяти. Я пишу на fasm. Какового бы типа (db, dw, dd, dq, dt) я не объявлял fpu_state на команду fxsave [fpu_state] fasm пишет, что размер не верный. Приходиться lea rax, [fpu_state]; fxsave [rax]. То же самое с fxrstor. Объявлять fpu_state: db 512 dup (?), чтобы компилятор не знал размер, не вариант. Как можно улучшить (делать одной командой, а не двумя)?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    KIV
    Инструкции сохраняющие состояние сопроцессора не имеют стандартных макро компилятора(масм, фасм etc.). Смотреть маны.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    fxsave byte [fpu_state] ?
     
  4. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Код (Text):
    1. label fpu_state_no_type at fpu_state
    2. fxsave [fpu_state_no_type]
    Ну или просто двоеточие после метки не даст фасму ассоциировать с ней размер: fpu_state: rb 512.
     
  5. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Других нет — в доке явно сказано:
    А в чём идея жёсткой типизации fpu_state? Это же составной объект. Можно объявить структуру, автоматом будет нетипизированная метка.