CELua[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    FPU инструкция FINCSTP. Очистка ST(0)

    Запланировано Прикреплена Закрыта Перенесена Справочники
    ce aafincstp
    1 Сообщения 1 Posters 45 Просмотры 1 Watching
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • MasterGHM Не в сети
      MasterGH Администраторы
      отредактировано

      Команда FINCSTP добавляет единицу (без переноса) к трехбитному полю TOP слова состояния FPU.

      Эффект действия команды FINCSTP заключается во вращении стека. Она не изменяет регистров тэгов и не перемещает данные. Она не эквивалентна операции выталкивания из стека, потому что, она не устанавливает тэг старой вершины стека в значение пустой.

      Флаги C0, C2, C3 регистра SW после выполнения команды не определены, флаг C1 устанавливается равным 0.

      Похожа на FSTP, также вращает стек регистров FPU (я кстати не знал, увидел при тестах в CE), но только не перемещает значение по адресу.

      FSTP [здесь указывается адрес или регистр]
      FINCSTP
      

      Если нужно вытолкнуть значение из ST(0), а адрес куда его выталкивать не нужен, то можно сделать так FINCSTP Или аналог FSTP ST(0)

      При использовании стоит обратить внимание на флаги, возможно их состояние будет влиять на исполнение кода.
      6260cbac-426b-48f3-bbb1-159a31ee36f6-изображение.png
      *Вообще не помню почему я пишу "выталкивать значение" через fstp, когда оно появляется снизу в ST(8). Т.е. не выталкивается по сути.

      1 ответ Последний ответ Ответить Цитировать 0

      • 1 / 1
      • Первое сообщение
        Последнее сообщение
      Powered by NodeBB | Contributors
      СeLua[RU] 2025©