Implementing an 8 bit fixed point register
Terry Reedy
tjreedy at udel.edu
Tue Jul 1 15:14:15 EDT 2008
nickooooola wrote:
> Hello to all
> I'm about to write a simulator for a microcontroller in python
> (why python? because I love it!!!)
>
> but I have a problem.
>
> The registry of this processor are all 8 bit long (and 10 bit for some
> other strange register)
> and I need to simulate the fixed point behaviour of the register,
> and to access the single bit.
In Python3, I would use a (mutable) bytearray.
IDLE 3.0b1
>>> reg1 = bytearray((0,)*8) # or *10 for 10 bits
>>> reg1
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')
>>> reg1[1]=1
>>> reg1[1]
1
>>> tuple(reg1)
(0, 1, 0, 0, 0, 0, 0, 0)
A bytearray subclass could enforce that all 'bits' (stored as bytes) are
0 or 1, have a customized representation to your taste, and add methods
like .flipall().
The overhead of using 8 bytes instead of 1 to hold the object value is
actually small compared to the minimum object size of 16 bytes (on Win32XP).
>>> sys.getsizeof(reg1)
24
In Python2.x, you can use the array module to make equivalent mutable
arrays of chars.
Terry Jan Reedy
More information about the Python-list
mailing list