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 + imm8add(Rd, Rn, imm3)
Rd = Rn + imm3add(Rd, Rn, Rm)
Rd = Rn + Rmadc(Rd, Rn)
Rd = Rd + Rn + carry
5.3. Oduzimanje¶
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. 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 / Rmudiv(Rd, Rn, Rm)
Rd = Rn / Rm
Ove funkcije izvode predznačeno odnosno nepredznačeno dijeljenje. Zastavice uvjeta nisu pogođene.