Если я понимаю, вам не нужно выполнять
mov r4, r4, ASR #14
str r4, [r5]
перед вызовом.Выполнение вызова до выполнения mov
bl foo
mov r4, r4, ASR #14
str r4, [r5]
- хорошая идея.
У мул будет больше времени для завершения во время разговора.STM будет проблемой, которая понятна.Конечно, вы можете нажать R4 до его вычисления.
Если foo является функцией asm, вы можете сохранить R4 позже в функции foo (возможно, вы можете попытаться не использовать r4, а затем не сохранять его).
, если функция foo является функцией C (или если вы можете изменить инструкцию push).используйте r12 вместо r4 в качестве регистра назначения MUL.
R12 позже потребуется для инструкции STM.Тогда вполне возможно, что муль имеет достаточно времени для завершения, прежде чем STM понадобится регистру назначения (R12)!