5. Aritmeettiset käskyt¶
5.1. Dokumenttikäytännöt¶
Merkintätapa: Rd, Rm, Rn tarkoittavat ARM-rekistereitä R0-R7. immN tarkoittaa N bitin levyistä välitöntä arvoa, esim. imm8, imm3. carry tarkoittaa carry-ehtolippua, not(carry) tarkoittaa sen komplementtia. Käskyissä, joissa on useampi kuin yksi rekisteriargumentti, jotkin niistä saavat olla samoja. Esimerkiksi seuraava lisää R0:n sisällön itseensä ja sijoittaa tuloksen R0:aan:
add(r0, r0, r0)
Aritmeettiset käskyt vaikuttavat ehtolippuihin paitsi missä toisin mainitaan.
5.2. Yhteenlasku¶
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. Vähennyslasku¶
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. Negaatio¶
neg(Rd, Rn)
Rd = -Rn
5.5. Kerto- ja jakolasku¶
mul(Rd, Rn)
Rd = Rd * Rn
Tämä tuottaa 32-bittisen tuloksen, jonka ylivuoto menetetään. Tulos voidaan tulkita etumerkilliseksi tai etumerkittömäksi operandien määritelmän mukaisesti.
sdiv(Rd, Rn, Rm)
Rd = Rn / Rmudiv(Rd, Rn, Rm)
Rd = Rn / Rm
Nämä funktiot suorittavat etumerkillisen ja etumerkittömän jakolaskun vastaavasti. Ehtolippuihin ne eivät vaikuta.