2013-05-02 2 views
1

Может кто-то объяснить/подтвердить это (в частности SUB линии) для меня:Четвертый параметр на ARM инструкции вычитаем

CMP align,#2 
CMPNE align,#5 
CMPNE align,#8 
SUBEQ xpos,xpos,width,LSR#1 

Я думал, что это может быть equivilant к С кодом:

if ((align==2) || (align==5) || (align==8)) 
{ 
    xpos -= width >> 1; 
} 

Я нашел это documentation, но я не понимаю четвертый параметр, imm12. Он просто говорит:

Инструкция SUB вычитает значение Operand2 или imm12 из значения в Rn.

ответ

3

Ваше предположение о том, как выглядит код для меня.

, но я не понимаю, в четвертый параметр, imm12

Четвертый параметр не imm12, а a shift operation на width (который я предполагаю, что это псевдоним одного из регистров общего назначения).

+0

Спасибо, да 'align',' width' и 'xpos' определены так:' align RN 10'. Так что это названный регистр, который я понимаю. – weston

+0

На самом деле, последний может быть регистром или немедленным (следовательно, imm). В приведенном выше, немедленное значение равно 1. –

+1

Вы думаете о другом немедленном. Ссылка 'imm12' в вопросе, скорее всего, была получена из инструкции SUB {cond} {Rd}, Rn, # imm12' (т. Е. OP просто искал неправильную форму инструкции в документации). – Michael

Смежные вопросы