ARM > Introduction to ARM > Multiply Instructions
Previous topic:
Conditional Execution
Next topic:
Single Register Data Transfer
Blog RISC OS PrivateEye PhotoFiler IntroductionToARM Geminus Toolbar Site Containers GitHub Project Hardware iOS Optimisation Aha Retro Links Dump Spectrum Risc PC The Great Escape LEGO Wedding Acorn Doodle Blender 3D Isometric 2D Article ARM Sinclair Ocean Disassembly Chase H.Q. Tip TargetedOptimisation Trace Hard Disc Vector Archimedes Logo Recreation Pixel Art Groening Simpsons Futurama Disenchantment BBC Micro Electron BasicOptimisation Slide MotionMasks Script Python Iyonix QuickFiler Game EfficientC
<operation>{cond}{S} Rd, Rm, Rs {, Rn}
<operation>
MUL
– Multiply
MLA
– Multiply with Accumulate
The multiply instructions produce the same result for both signed and unsigned values.
Historical note: Prior to ARMv4 specifying the same register for Rd and Rm had potentially unpredictable results.
<operation>{cond}{S} RdLo, RdHi, Rm, Rs
64-bit result output into two registers.
<operation>
UMULL
– Unsigned Multiply Long
UMLAL
– Unsigned Multiply with Accumlate Long
SMULL
– Signed Multiply Long
SMLAL
– Signed Multiply with Accumlate Long
Note that they have the same form, but they treat the sign bit differently.