LINUX.ORG.RU
Если операнд (т.е. регистр или память) не выходной (output), но изменяется инструкцией, то он заносится в clobbered.
justme
()
А для чего это делается? Неужели gcc сам неможет определить какие
регистры изменяются, а какие нет?
anonymous
()
А как? Он про ассемблерные инструкции ничего не знает. Он их выдаёт на выходе, конечно, но дизассемблированием того, что ты написал в inline assembly, он не занимается.
justme
()
Я прав? -> gcc в листиг_ассемблерный вставляет инструкции как строки,
и прочитав clobbered list узнает регистры, которые мы используем на входе,
чтобы правильно сфомировать исходняк на asm'e, ну скажем правильно
сформировать инструкции до #APP или что-то в этом роде?
anonymous
()
Да, из clobbered list он узнаёт, какие регистры нужно сохранить перед вставленным кодом и восстановить после него. Из input/output list он узнаёт, где должны быть входные данные и откуда брать выходные.
justme
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.