yazdmich

Untitled

Nov 13th, 2014
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. # pylint: disable:E501
  2. from ram import RAM
  3. from operator import add, sub, mul, floordiv, mod
  4. inc = lambda x: x + 1
  5. dec = lambda x: x - 1
  6.  
  7.  
  8. class CPU:
  9.  
  10. def __init__(self):
  11. self.registers = {'00': 0, '01': 0, '02': 0, '03': 0}
  12. self.IP = 0
  13. self.SP = int('0xBF', 16)
  14. self.SR = 0
  15. self.ram = RAM()
  16. self.table = {'A0': {'len': 2, 'op': add},
  17. 'A1': {'len': 2, 'op': sub},
  18. 'A2': {'len': 2, 'op': mul},
  19. 'A3': {'len': 2, 'op': floordiv},
  20. 'A4': {'len': 1, 'op': inc},
  21. 'A5': {'len': 1, 'op': dec},
  22. 'A6': {'len': 2, 'op': mod},
  23. 'B0': {'len': 2, 'op': add},
  24. 'B1': {'len': 2, 'op': sub},
  25. 'B2': {'len': 2, 'op': mul},
  26. 'B3': {'len': 2, 'op': floordiv},
  27. 'B6': {'len': 2, 'op': mod},
  28. 'C0': {'len': 1, 'op': },
  29. 'C1': {'len': 1, 'op': 'JZ'},
  30. 'C2': {'len': 1, 'op': 'JNZ'},
  31. 'C3': {'len': 1, 'op': 'JS'},
  32. 'C4': {'len': 1, 'op': 'JNS'},
  33. 'C5': {'len': 1, 'op': 'JO'},
  34. 'C6': {'len': 1, 'op': 'JNO'},
  35. 'D0': {'len': 2, 'op': 'MOV'},
  36. 'D1': {'len': 2, 'op': 'MOV'},
  37. 'D2': {'len': 2, 'op': 'MOV'},
  38. 'D3': {'len': 2, 'op': 'MOV'},
  39. 'D4': {'len': 2, 'op': 'MOV'},
  40. 'DA': {'len': 2, 'op': 'CMP'},
  41. 'DB': {'len': 2, 'op': 'CMP'},
  42. 'DC': {'len': 2, 'op': 'CMP'},
  43. 'E0': {'len': 1, 'op': 'PUSH'},
  44. 'E1': {'len': 1, 'op': 'POP'}}
  45.  
  46. def fetch(self, loc):
  47. op = self.ram.get(loc)
  48. lookup = self.table[op]
  49. forward, func = lookup.values()
  50. args = [self.fetch(loc + i) for i in range()
Advertisement
Add Comment
Please, Sign In to add comment