micropython: add micropython component
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
Arithmetic instructions
|
||||
=======================
|
||||
|
||||
Document conventions
|
||||
--------------------
|
||||
|
||||
Notation: ``Rd, Rm, Rn`` denote ARM registers R0-R7. ``immN`` denotes an immediate
|
||||
value having a width of N bits e.g. ``imm8``, ``imm3``. ``carry`` denotes
|
||||
the carry condition flag, ``not(carry)`` denotes its complement. In the case of instructions
|
||||
with more than one register argument, it is permissible for some to be identical. For example
|
||||
the following will add the contents of R0 to itself, placing the result in R0:
|
||||
|
||||
* add(r0, r0, r0)
|
||||
|
||||
Arithmetic instructions affect the condition flags except where stated.
|
||||
|
||||
Addition
|
||||
--------
|
||||
|
||||
* 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``
|
||||
|
||||
Subtraction
|
||||
-----------
|
||||
|
||||
* 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)``
|
||||
|
||||
Negation
|
||||
--------
|
||||
|
||||
* neg(Rd, Rn) ``Rd = -Rn``
|
||||
|
||||
Multiplication and division
|
||||
---------------------------
|
||||
|
||||
* mul(Rd, Rn) ``Rd = Rd * Rn``
|
||||
|
||||
This produces a 32 bit result with overflow lost. The result may be treated as
|
||||
signed or unsigned according to the definition of the operands.
|
||||
|
||||
* sdiv(Rd, Rn, Rm) ``Rd = Rn / Rm``
|
||||
* udiv(Rd, Rn, Rm) ``Rd = Rn / Rm``
|
||||
|
||||
These functions perform signed and unsigned division respectively. Condition flags
|
||||
are not affected.
|
Reference in New Issue
Block a user