Вопрос

В G ++ списки Clobber для ASM можно указать, например:

asm ("somecode" : : "r1", "r2", "r3");

Это означает, что кодовые изменения ASM регистрируются R1, R2, R3.

Теперь мои измененные регистры зависят от параметра шаблона n (то asm Блок находится внутри шаблона функции), а регистрирует R1, ..., RN будет изменен. Как я могу выразить это?

Это было полезно?

Решение

Сколько разных созвездей регистрации вы столкнулись? Если не слишком много, вы могли бы предоставить конкретную реализацию для каждого. (Специализация шаблона)

Потому что я захожу, что нет возможности создавать «шаблонные заявления».

Другие советы

Вы можете установить весь реестр, который вы можете использовать в списке Clobber, поэтому компилятор не использует их для хранения значения переменной; Я знаю, что это немного медленнее, но если вам не нужна очень высокая оптимизация, она будет работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top