Форум программистов, компьютерный форум, киберфорум
Низкоуровневое программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,125
Записей в блоге: 12
1
C/C++

Clobbers для регистров FPU в асм-вставке GNU C/C++

11.12.2021, 14:50. Показов 1203. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос по спецификаторам asm-вставки в GCC.
Если я использую fld / fstp, какой спецификатор использовать в clobbers?
C++
1
2
3
4
5
6
7
8
9
10
11
12
asm(
   ...
   "fld ..."
   "fld ..."
   ...
   "fstp ..."
   "fstp ..."
   ...
  : // outputs
  : // inputs
  : // clobbers
);
Не понимаю объяснения в мане: https://gcc.gnu.org/onlinedocs... smoperands

Для регистров идёт перечисление регистров ("%eax", например), для памяти "memory", для флагов "cc".
А если нужно указать, что я сдвигаю стек на 2 позиции? Если писать "st(1)", получается, что я просто затираю st(1), а я ничего не затираю, только сдвигаю FPU-стек. Как мне объяснить компилятору/оптимизатору, что мне нужно, чтобы st(6) и st(7) не были заняты (иначе будет переполнение стека)?

Добавлено через 4 минуты
Есть вообще какое-то соглашение по FPU-стеку, стандарт использования?
Собственно, я нашёл вот что (у Агнера):
The floating point registers ST(0)-ST(7) need not be saved. The register stack must be emptied before any call or return, except for registers used for return values. The 64-bit Microsoft compiler does not use ST(0)-ST(7).
С другой стороны, это не значит что FPU-стек должен быть всегда пуст. Внутри функции. Или даже при вызове внутренних (оптимизированных компилятором) функций, хотя здесь есть опасность переполения, но это тоже реально контролировать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2021, 14:50
Ответы с готовыми решениями:

Найти процент в асм вставке
Доброго времени суток. Можете помочь, нужно в ассемблерной вставке найти сколько процентов...

интегрирование с использованием регистров FPU и SSE
есть интеграл в фпу и ссе (в качестве примера скинули),дело в том что я в асме не совсем...

Вывод массива в асм вставке Си-кода
Не получается вывести массив в консоль. Ругается на этапе компиляции: /usr/bin/ld:...

Scratch registers в асм-вставке GCC
Подскажите, как указать в асм-вставке GCC, что входной регистр изменяется? Грубо говоря, asm...

0
11.12.2021, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2021, 14:50
Помогаю со студенческими работами здесь

Scratch registers в асм-вставке GCC
Подскажите, как указать в асм-вставке GCC, что входной регистр изменяется? Грубо говоря, asm...

Занесение в FPU-стек регистров общего назначения
Еще раз всем привет! Возник маленький вопрос по поводу использования регистров общего назначения в...

Модульное программирование(связь асм-асм и асм-пасм)
Очень нужна помощь, сама сделала все что могла...просто не понимаю почему не работает( задание:...

Сложить содержание регистров R1 и R4 текущего банка регистров и отразить результат на статическом индикаторе
Сложить содержание регистров R1 и R4 текущего банка регистров и отразить результат на статическом...

Вывод на экран двоичного содержимого двух регистров (ввести значения этих регистров требуется с клавиатуры)
требуется разработать программу вывода на экран двоичного содержимого двух регистров так, чтобы...

GNU Compiler & GNU Debugger
Какой сборкой пользоваться, если нужен только компилятор и отладчик? Вариант 1: Можно скачать...

Для чего сегодня асм?
Вопрос конкретный - для чего сегодня используется асм x86? Сейчас всё кросс-платформеное, поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru