FDIV64 ist insgesamt 520 Bytes lang. Die Ausführungszeit ist unabhängig von den Operanden und beträgt 131 Zyklen.
typedef struct {
unsigned int quot;
unsigned int rem;
} udiv_t;
/* Wenn Quotient und Rest benötigt werden */
extern __value_in_regs udiv_t FDIV64(unsigned int dvd_lo,
unsigned int dvd_hi,
unsigned int dvs);
/* Wenn nur der Quotient interessiert */
extern unsigned int FDIV64(unsigned int dvd_lo, unsigned int dvd_hi,
unsigned int dvs);
|FDIV64|
adds r0,r0,r0
adc r1,r1,r1
GBLA i
i SETA 31
WHILE i >0
cmp r1,r2 ;Also die 4 Zeilen
subcs r1,r1,r2 ;31 mal wiederholen !
adcs r0,r0,r0
adc r1,r1,r1
i SETA i-1
WEND
cmp r1,r2
subcs r1,r1,r2
adcs r0,r0,r0
movs pc,r14
Wer mich mit elektronischer Post beglücken will, kombiniere die Bestandteile peter, peter-teichmann und de in sinnvoller Art und Weise, um eine Adresse zu erhalten.