5. تعليمات الحساب¶
5.1. اصطلاحات التوثيق¶
الترميز: Rd, Rm, Rn تدل على سجلات ARM من R0 إلى R7. immN تدل على قيمة فورية بعرض N بت، مثل imm8 وimm3. carry تدل على علم شرط الحمل، وnot(carry) تدل على متممه. في حالة التعليمات التي تحتوي على أكثر من وسيط سجل واحد، يُسمح بأن يكون بعضها متطابقًا. على سبيل المثال، ستضيف التعليمة التالية محتويات R0 إلى نفسها، واضعةً النتيجة في R0:
add(r0, r0, r0)
تؤثر تعليمات الحساب على أعلام الشرط إلا حيث يُذكر خلاف ذلك.
5.2. الجمع¶
add(Rdn, imm8)
Rdn = Rdn + imm8add(Rd, Rn, imm3)
Rd = Rn + imm3add(Rd, Rn, Rm)
Rd = Rn + Rmadc(Rd, Rn)
Rd = Rd + Rn + carry
5.3. الطرح¶
sub(Rdn, imm8)
Rdn = Rdn - imm8sub(Rd, Rn, imm3)
Rd = Rn - imm3sub(Rd, Rn, Rm)
Rd = Rn - Rmsbc(Rd, Rn)
Rd = Rd - Rn - not(carry)
5.4. النفي¶
neg(Rd, Rn)
Rd = -Rn
5.5. الضرب والقسمة¶
mul(Rd, Rn)
Rd = Rd * Rn
ينتج هذا نتيجة بعرض 32 بت مع فقدان الفائض. يمكن معاملة النتيجة على أنها ذات إشارة أو بلا إشارة وفقًا لتعريف المعاملات.
sdiv(Rd, Rn, Rm)
Rd = Rn / Rmudiv(Rd, Rn, Rm)
Rd = Rn / Rm
تؤدي هاتان الدالتان القسمة ذات الإشارة والقسمة بلا إشارة على التوالي. لا تتأثر أعلام الشرط.