diff python/ppci/core/bitreader.py @ 95:4a37d6992bd3

movage
author windel
date Mon, 24 Dec 2012 13:24:59 +0100
parents python/libs/compiler/core/bitreader.py@1be00bcfaabb
children ed230e947dc6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python/ppci/core/bitreader.py	Mon Dec 24 13:24:59 2012 +0100
@@ -0,0 +1,28 @@
+from .errors import CompilerException
+import struct
+
+def bits(f):
+   while True:
+      Byte = f.read(1)
+      for i in range(8):
+         yield Byte & 0x1
+         Byte >>= 1
+
+class BitReader:
+   def __init__(self, f):
+      self.stream = bits(f)
+      self.curword = None
+   def parseModule(self):
+      if self.read(8) != ord('B') or self.read(8) != ord('C'):
+         raise CompilerException('Invalid bitcode signature')
+      for bitsig in [0x0, 0xC, 0xE, 0xD]:
+         if self.read(4) != bitsig:
+            raise CompilerException('Invalid bitcode signature')
+
+   def read(self, numbits):
+      if numbits == 8:
+         b = self.stream.read(1)
+         print(b)
+         return int(b[0])
+      return 2
+