Выполняется ли часть после BEQ, если флаг EQ не = 1 - PullRequest
0 голосов
/ 19 января 2019

Если флаг EQ после SUBS равен = 0, выполняется ли процедура Routine1?или он должен быть разветвлен BEQ (флаг EQ должен быть 1) для выполнения

.

У меня есть следующий код:

   Change                 
      SUBS R1, R1, #0x1
      BEQ  Routine 1
   Routine 1
      MOV R1, #0x10
      B       Change

.

1 Ответ

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

Нет, в метке, которую вы используете для реализации подпрограммы, нет ничего особенного, она волшебным образом не защищает код, следующий за ней. Ваша ветка здесь будет архитектурно вести себя одинаково независимо от кодов условий.

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

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