Arithmetic with big numbers by Theo Kortekaas

Calculations with big numbers

Most computers have an instruction set to perform simple arithmetic operations, such as addition and subtraction, multiplication and division. These operations are performed on numbers that have a limited value. The maximum value is usually the largest value that fits into one of the registers of the computer. We usually call these registers integer registers and the numbers that fit in these registers are called integers. The size of such a register is expressed in number of bits. The most current computers (laptop and desktop computers) have integer registers of 32-bits and / or 64-bits. The maximum value that can fit in a 32-bit register is 232-1 = 4,294,967,295. In a 64-bit register is that 264-1 = 18.446.744.073.709.551.615. The computer instructions that work with these registers are often simple and include operations lik Add for addition, Sub for subtraction and Shl and Shr (Shift left and Shift right) for left and right shifting of the contents of a register.

Once we have to work with larger numbers (such as with cryptography) it will not suffice to use simple computer instructions that operate on single registers, but we must take measures to link the contents of registers to each other, to perform operations on large numbers.

LBA

LBA (Long Binary Architecture) is an architecture used to design computer programs that can work in a simple way with big numbers. This architecture is firstly intended for assembler programmers for Windows programs that run on a computer with X86. But the LBA architecture can also be used in C++ programs, that work with large numbers.
There are already programs libraries with functions for large numbers, such as GMP/GNU library. Why then this new architecture? LBA is designed so as to remain close to the X86 instruction set and to provide for many X86 instructions on integer registers similar (macro) instructions for working with large numbers. This may be attractive to assembler programmers. Furthermore, LBA can be used in C++ programs to improve the readability of these programs compared to programs that use the GMP library or similar libraries.
LBA consist of the following components: