У арм 7 команды в разных режимах 4 или 8 байт!!!! то есть в одном только 4, а другом только 8.
Cоответственно, идет выборка команд... представим себе что в режиме 4 байта на команду
счеткик РС шагает 8-ми байтными шагами или в режиме 8-ми байтных команд выборка идет через 4 байта... ясно.
Переключение режимов на практике выполняется командой перехода BX.
При этом что в режиме 4-х, что в режиме 8-ми байтных шагов младший бит всегда не используется для перехода.
Поскольку старт проца всегда с адреса 00000, то что для 4, что для 8 всегда два мл бита =00.
Так вот, на практике мл бит показывает переключение в тот или другой режим.
Кейл не реагирует на этот бит и переключение по ходу выполнения программы режимов динамически невозможно...
m1: =xxxxxxxx00
m2: =xxxxxxxx00+4(8)
m1: LDR R12,PC,#00000001 в момент начала выполнения этой команды счетчик РС =m2, а не m1, потому как показывает,
где след команда. К этому значению прибавляется 1 и значение счетчика =m2+1.
Реальный проц переключит режим и прыгнет на m2, а Кейл прыгнет на m2+1, что сразу влечет ошибку кода
и прыжок по прерыванию ошибки кода в ж....
m2: BX R12