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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to