.TH imul 3 "December 27, 2024" "libmpu" "LibMPU Programmer's Manual"
.SH NAME
\fBimul\fP \- unsigned integer multiplication
.SH SYNOPSIS
.nf
.B #include <libmpu.h>
.PP
.BI "void imul( mpu_int *" prod ", mpu_int *" num ", mpu_int *" mul ", int " nb_prod ", int " nb_num " );
.fi
.SH DESCRIPTION
The function \fBimul()\fP performs the unsigned multiplication operation of the variable located
at the address \fBnum\fP by the variable located at the address \fBmul\fP. The result is placed
at \fBprod\fP. The contents of the memory at addresses \fBnum\fP, \fBmul\fP are not changed, and
the previous memory contents at address \fBprod\fP are lost. The \fBnb_prod\fP parameter determines
the size of the operand (in bytes) located at address \fBprod\fP, and the \fBnb_num\fP parameter
determines the size of operands (in bytes) located at addresses \fBnum\fP, \fBmul\fP.
.PP
The function affects the flags \fBA\fP, \fBC\fP, \fBO\fP, \fBP\fP, \fBS\fP, \fBZ\fP, \fBR\fP.
.PP
The \fBA\fP flag is reset to 0. The \fBP\fP flag is set only when the size of the \fBprod\fP
operand is one or two bytes (\fBnb\fP == 1 || \fBnb\fP == 2). Flag \fBR\fP (major || remainder)
is set in the case that the resulting product requires a larger size than defined by
\fBnb_prod\fP parameter.
.sp
.SH SEE ALSO
.BR iadd(3),
.BR isub(3),
.BR iadc(3),
.BR isbb(3),
.BR ishl(3),
.BR ishr(3),
.BR isal(3),
.BR isar(3),
.BR irol(3),
.BR iror(3),
.BR ircl(3),
.BR ircr(3),
.BR ishln(3),
.BR ishrn(3),
.BR isaln(3),
.BR isarn(3),
.BR iroln(3),
.BR irorn(3),
.BR ircln(3),
.BR ircrn(3),
.BR ineg(3),
.BR inot(3),
.BR iand(3),
.BR itest(3),
.BR icmp(3),
.BR ior(3),
.BR ixor(3),
.BR iinc(3),
.BR idec(3),
.BR ixchg(3),
.BR icpy(3),
.BR icvt(3),
.BR ismul(3),
.BR idiv(3),
.BR isdiv(3),
.BR iatoi(3),
.BR iatoui(3),
.BR iitoa(3),
.BR iuitoa(3).