======== START LECTURE #13 ========

This works!
but, when compared to the better solutions to come, is wasteful of resourses and hence is

The product register must be 64 bits since the product is 64 bits

Why is multiplicand register 64 bits?

Why is ALU 64-bits?

POOF!! ... as the smoke clears we see an idea.

We can solve both problems at once

This results in the following algorithm

    product <- 0
    for i = 0 to 31
        if LOB of multiplier = 1
            (serial_in, product[32-63]) <- product[32-63] + multiplicand
        shift product right 1 bit
        shift multiplier right 1 bit

What about control

Redo same example on board

A final trick (``gate bumming'', like code bumming of 60s)

    product[0-31] <- multiplier
    for i = 0 to 31
        if LOB of product = 1
            (serial_in, product[32-63]) <- product[32-63] + multiplicand
        shift product right 1 bit

Control again boring

Redo same example on board

The above was for unsigned 32-bit multiplication

For signed multiplication

There are faster multipliers, but we are not covering them.

We are skiping division.

We are skiping floating point.

Homework: Read 4.11 ``Historical Perspective''.