# IAIK Online Code-Generator for Large Integer Multiplication

## Description

This webpage allows developers to generate Assembly source-code to perform large Integer multiplication on multi-precision hardware architectures like the AVR family of microcontrollers. With the *Online AVR-Code Generator*, one can generate Assembly-optimized code to efficiently perform fast multi-precision multiplication.

There exist many methods to perform large Integer multiplication. The Online AVR-Code Generator supports *Operand Caching Multiplication*, *Hybrid Multiplication*, *Product-Scanning Multiplication* (aka *Comba* or *column-wise* multiplication), and *Operand-Scanning Multiplication* (aka *school-book* or *row-wise* multiplication). For a detailed description of the given multiplication methods, we refer to this paper published at CHES 2011.

#### Features:

- Generation of Assembler-source code for large Integer multiplication methods.
**Multiplication methods:**Operand Caching Multiplication, Hybrid Multiplication, Product-Scanning Multiplication, and Operand-Scanning Multiplication.**Architectures**: 8-bit AVR ATmega (e.g. ATmega128) and AVR ATTiny (e.g. ATTiny167) microcontroller. Note: the ATTiny does not feature a dedicated hardware multiplier.**Operand sizes:**from 160 to 1024 bits.- Looped or Unrolled instructions (trade-off between speed and code size).
**Supported Compilers**: avr-gcc, Rowley Crossworks for AVR, IAR AVR Compiler.

#### Applet Operations:

- 1. The multiplication parameters can be set by the Java-applet comboxes, checkbox, and textfield.
- 2. Press the
**Generate**button to generate the source code. The code will be printed in the*Code*textfield. - 3. Simply copy/paste the source code into a textfile named
*mul_asm.S*(or*mul_asm.asm*for Crossworks Compiler). - 4. A corresponding C-file is available in the
*Example C Test-File*panel in the lower right of the applet. Simply copy/paste it and put it into a textfile named*test_mul.c*. - 5. In the
*Statistics*panel, the needed number of clock cycles and the code size is given. All values have been simulated using avr-gcc with simulavr. Also the number of involved instructions is given in the statistics.

## Online Code Generator

You can start the applet by pressing the "launch" button. The applet will start in a new window.

Note: The website requires Java to be installed and JavaScript to be enabled in your browser to launch the Java applet.

Also note that the applet has been signed to allow copy/paste functionalitites. You can download the X.509 certificate here.

Alternatively, you can also launch the applet via Java Web Start. If you don't see the Java Web Start application running, make sure that you have at least the Java 2 Platform, Standard Edition (J2SE) 1.4.2 release on your client. If not, download and install the latest release of the Java SE Development Kit (JDK).

#### AVR Performance Charts

#### Application

The online calculator is interesting for developers who would like to implement an Integer multiplication with large operands, e.g. 160-1024 bits. This is required, for example, in cryptography, image-processing, signal processing, or digital-filtering applications.

For more information please contact: Michael Hutter or Erich Wenger.