# Issue #10: Binary arithmetic

## Summary

**Topics**:
Binary arithmetic

No changes were pushed to `devel`

branch this week.
Everything this post is about is happening on `issue/e8113638/math-on-bits`

.

# Binary arithmetic

Viua VM added bit string manipulation to the instruction set some time ago. Now, artihmetic on bit strings is in the works.

## Rationale

Implementing arithmetic in Viua VM that is independent of the underlying hardware is a step forward in making the VM more reliable and predictable. If the arithmetic is wholly contained inside the VM kernel than the VM defines the rules, and can prevent such errors as silent truncation of results.

## Design

The behaviour of bit strings arithmetic is still in a state of flux. Final definition of the semantics of bit string arithmetic will probably not come soon. Most probably there will be two sets of operations: a fixed one, keeping the width of the result the same as the width of the operands; and an "arithmetic" one, extending result as needed.

## Available operations

Operations implemented so far include increment, decrement, addition, subtraction (using two's complement), and multiplication.

**Next**: #11: Different types of arithmetic

**Previous**: #9: Fixes. And more fixes.