LINUX.ORG.RU

Если операнд (т.е. регистр или память) не выходной (output), но изменяется инструкцией, то он заносится в clobbered.

justme
()

А для чего это делается? Неужели gcc сам неможет определить какие
регистры изменяются, а какие нет?

anonymous
()

А как? Он про ассемблерные инструкции ничего не знает. Он их выдаёт на выходе, конечно, но дизассемблированием того, что ты написал в inline assembly, он не занимается.

justme
()

Я прав? -> gcc в листиг_ассемблерный вставляет инструкции как строки,
и прочитав clobbered list узнает регистры, которые мы используем на входе,
чтобы правильно сфомировать исходняк на asm'e, ну скажем правильно
сформировать инструкции до #APP или что-то в этом роде?

anonymous
()

Да, из clobbered list он узнаёт, какие регистры нужно сохранить перед вставленным кодом и восстановить после него. Из input/output list он узнаёт, где должны быть входные данные и откуда брать выходные.

justme
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.