ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 июля
1183954 Топик полностью
Idler (06.03.2022 11:05, просмотров: 113) ответил st256 на Да без разницы. Идею я понял.
Конкретно у Кейла есть засада по отношению к этому биту. По крайней мере у 4.x, у 5.x не проверял. Цитата: 

У арм 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