5. คำสั่งคำนวณ¶
5.1. รูปแบบของเอกสาร¶
สัญกรณ์: Rd, Rm, Rn แทน ARM registers R0-R7 immN แทนค่าทันทีที่มีความกว้าง N บิต เช่น imm8, imm3 carry แทนแฟล็กเงื่อนไข carry, not(carry) แทนส่วนเติมเต็มของมัน ในกรณีของคำสั่งที่มีอาร์กิวเมนต์ register มากกว่าหนึ่งตัว บางตัวอาจเหมือนกันได้ ตัวอย่างเช่น สิ่งต่อไปนี้จะบวกเนื้อหาของ 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 บิตโดยสูญเสีย overflow ผลลัพธ์อาจถือเป็นค่าที่มีเครื่องหมายหรือไม่มีเครื่องหมายตามนิยามของตัวถูกดำเนินการ
sdiv(Rd, Rn, Rm)
Rd = Rn / Rmudiv(Rd, Rn, Rm)
Rd = Rn / Rm
ฟังก์ชันเหล่านี้ทำการหารแบบมีเครื่องหมายและไม่มีเครื่องหมายตามลำดับ แฟล็กเงื่อนไขไม่ได้รับผลกระทบ