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
פונקציות אלה מבצעות חילוק מסומן ובלתי-מסומן בהתאמה. דגלי התנאי אינם מושפעים.