C ++: ASM Clobber список - PullRequest
       45

C ++: ASM Clobber список

2 голосов
/ 04 ноября 2010

В g ++ можно указать списки клоббера для asm, например:

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

, что означает, что код asm изменяет регистры r1, r2, r3.

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

Ответы [ 2 ]

1 голос
/ 04 ноября 2010

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

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

0 голосов
/ 17 января 2011

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

...