В чем разница между инструкциями CMP и TST в ARM? - PullRequest
0 голосов
/ 10 января 2019

Мне сложно понять разницу между этими двумя инструкциями в ARM. Из того, что я понимаю,

CMP R1, R2

Выполнит действие R1-R2, но не сохранит результат. Затем он установит флаги в регистре состояния, такие как N (отрицательный, если R1

То, что я не понимаю, это то, что TST делает по-другому. В моих заметках говорится, что TST не меняет значения своих операндов ... но я думал, что CMP тоже не изменился. Чем отличаются две инструкции?

Как это

CMP R1, R2

отличается от

TST R1, R2

? Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 10 января 2019

TST R1, R2 вычисляет побитовое И для R1 и R2, а затем отбрасывает результат, в то время как CMP R1, R2 вычитает их. TST в основном используется в ARM для определения, установлен ли данный бит в числе. Например, чтобы проверить, является ли R1 нечетным, вы можете сделать:

TST R1, #1    @ is R1 odd?

Устанавливает флаги Z в 1, если R1 нечетно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...