Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,121
Записей в блоге: 12
1

Scratch registers в асм-вставке GCC

14.04.2020, 00:01. Показов 552. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, как указать в асм-вставке GCC, что входной регистр изменяется?
Грубо говоря,
C
1
2
3
4
5
6
  asm volatile(
    "cld\n\t"
    "rep movsl\n\t"
    :
    : "S"(src), "D"(dst), "c"(count)
  );
Я не могу прописать "%esi", "%edi", "%ecx" в списке clobbers, что делать-то?

В доке пишут, что нет способа указать, что входной регистр изменяется, если не указать его в списке выходных параметров.
Но что мне там указывать? Я же не могу написать в списке выходных параметров просто "=S", "=D", "=c" без скобок.

Есть такие мысли только:
1. Указывать во входных просто "r" и в асме писать mov %0, %%esi и т.д. Но это тоже как-то тупо (лишние пересылки туда-сюда, и кстати, не факт, что получится, может тупо не хватить регистров, если их будет больше, чем 3).
2. Сохранить и восстановить эти регистры (push/pop) внутри асм-вставки, но это тоже лишние танцы с бубном.

И тут ещё один вопрос рождается: если я указал в clobbers callee-save регистры, мне же не нужно их сохранять/восстанавливать, верно (точнее говоря, я надеюсь), компилятор сделает это сам?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2020, 00:01
Ответы с готовыми решениями:

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

Использование внешних переменных в asm вставке и компиляцией gcc
Есть такой код для выполнения операций со входной строкой (функциональная часть сейчас неважна): ...

GCC Сборка 32 разрядной версии GCC 64 разрядным GCC
Доброго времени суток. Возникла необходимость под 32х разрядный Linux, собрать 32 разрядный GCC. Но...

Core registers
Добрый вечер всем! Подскажите можно ли на Си получить доступ к данным регистрам и как? И...

2
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,452
22.04.2020, 13:30 2
Собери программу с нужным ключем (-s если не ошибаюсь), чтобы GCC сохранил еще и транслированный в асм код. И посмотри что происходит
0
Asm/C++/Delphi/Py/PHP/VBA
6528 / 1973 / 228
Регистрация: 14.12.2014
Сообщений: 4,121
Записей в блоге: 12
22.04.2020, 16:40  [ТС] 3
assemberist, происходит в каком случае?
0
22.04.2020, 16:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2020, 16:40
Помогаю со студенческими работами здесь

Cannot access label through segment registers
Помогите, что со строчками 15 и 16 не так? error A2074: cannot access label through segment...

Cannot access label through segment registers
Есть такой код программы: .386 .model tiny .stack 100h .data massiv dw ...

Лабораторные работы :scratch:
#include <iostream> #include <vector> using namespace std; int main() { vector<int>...

Програма типа Scratch на курсовой
Стоит ли брать на курсовой такую ​​программу? Трудно будет ее реализовать? Спасибо..

Ошибка при компиляции. Can't address with currently ASSUMEd segment registers
Запросить вначале login, а затем пароль. При вводе пароля не отображать вводимые символы. Выдать...

Не видит жесткий диск на нетбуке :scratch:
После неудачной установки windows xp с флешки на нетбук eMachines em350, при повторной попытке...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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