ARM/aeabi uidivmod

From aldeid
Jump to: navigation, search
You are here
__aeabi_uidivmod

Description

Perform a division of R0/R1 and save quotient in R0 and remainder in R1.

Syntax

BL __aeabi_uidivmod

Examples

.text:00000EEE MOVS    R0, R4                                ; R0 = 0x7365
.text:00000EF0 LDR     R1, [SP,#0x1BB8+current_prime_number] ; R1 = 0x2
.text:00000EF2 BL      __aeabi_uidivmod                      ; division R0/R1. R0 = quotient = 0x39b2, R1 = remainder = 0x1
.text:00000EF6 LSLS    R1, R1, #0x10
.text:00000EF8 LSRS    R1, R1, #0x10
.text:00000EFA BNE     loc_F5C

The above example could be illustrated as follows in python

>>> r0 = 0x7365
>>> r1 = 0x2
>>> (quotient, remainder) = (r0/r1, r0%r1)
>>> hex(quotient)
'0x39b2'
>>> hex(remainder)
'0x1'