5. Aritmetičke instrukcije

5.1. Konvencije dokumenta

Notacija: Rd, Rm, Rn označavaju ARM registre R0-R7. immN označava neposrednu vrijednost širine N bitova npr. imm8, imm3. carry označava zastavicu uvjeta prijenosa, not(carry) označava njezinu negaciju. U slučaju instrukcija s više od jednog argumenta registra, dopušteno je da neki budu identični. Na primjer, sljedeće će dodati sadržaj registra R0 samom sebi, smjestivši rezultat u R0:

  • add(r0, r0, r0)

Aritmetičke instrukcije utječu na zastavice uvjeta osim gdje je navedeno drugačije.

5.2. Zbrajanje

  • add(Rdn, imm8) Rdn = Rdn + imm8

  • add(Rd, Rn, imm3) Rd = Rn + imm3

  • add(Rd, Rn, Rm) Rd = Rn + Rm

  • adc(Rd, Rn) Rd = Rd + Rn + carry

5.3. Oduzimanje

  • sub(Rdn, imm8) Rdn = Rdn - imm8

  • sub(Rd, Rn, imm3) Rd = Rn - imm3

  • sub(Rd, Rn, Rm) Rd = Rn - Rm

  • sbc(Rd, Rn) Rd = Rd - Rn - not(carry)

5.4. Negacija

  • neg(Rd, Rn) Rd = -Rn

5.5. Množenje i dijeljenje

  • mul(Rd, Rn) Rd = Rd * Rn

Ovo proizvodi 32-bitni rezultat s gubitkom prelijevanja. Rezultat se može tretirati kao predznačeni ili nepredznačeni prema definiciji operanada.

  • sdiv(Rd, Rn, Rm) Rd = Rn / Rm

  • udiv(Rd, Rn, Rm) Rd = Rn / Rm

Ove funkcije izvode predznačeno odnosno nepredznačeno dijeljenje. Zastavice uvjeta nisu pogođene.