tree 899eb3fe2197cdb2ab490d771cd1a0c458efb172
parent 0fa81f7ee005dbf289bd28e8750939235acc7118
author Paul Greenwood <Paul.Greenwood@ibm.com> 1565915371 -0500
committer Zane Shelley <zshelle@us.ibm.com> 1568429131 +0000

Add Register Class

Register is an abstract base class for real and virtual registers.  A
few examples of these registers are; HardwareRegister, ConstantRegister,
NotRegister, and AndRegister.  As a base class of register types, the
Register class creates a place where these registers can be put
together like logical building blocks.  For example, Register makes this
possible:

Register * fir = new HardwareRegister(REG_ADDRESS, REG_WIDTH,
                                      DEFAULT_CHIP_TYPE, ACCESS_RO);
Register * mask = new ConstantRegister( 0xffffffff00000000 );
Register * fir_mask = new AndRegister(fir, mask);
const BitString * bs = fir_mask->getBitString();

The getBitString function (defined by each register) provides access to
the BitString that manages each register's data.  In this example bs
will contain the result of fir & mask.

Change-Id: I497d997c1cc338c53cb04a827bf2f4aca6b781c9
Signed-off-by: Paul Greenwood <Paul.Greenwood@ibm.com>
