src/platform/python/mgba/arm.py (view raw)
1# Copyright (c) 2013-2016 Jeffrey Pfau
2#
3# This Source Code Form is subject to the terms of the Mozilla Public
4# License, v. 2.0. If a copy of the MPL was not distributed with this
5# file, You can obtain one at http://mozilla.org/MPL/2.0/.
6from ._pylib import ffi, lib # pylint: disable=no-name-in-module
7
8
9class _ARMRegisters:
10 def __init__(self, cpu):
11 self._cpu = cpu
12
13 def __getitem__(self, reg):
14 if reg > lib.ARM_PC:
15 raise IndexError("Register out of range")
16 return self._cpu._native.gprs[reg]
17
18 def __setitem__(self, reg, value):
19 if reg >= lib.ARM_PC:
20 raise IndexError("Register out of range")
21 self._cpu._native.gprs[reg] = value
22
23
24class ARMCore:
25 def __init__(self, native):
26 self._native = ffi.cast("struct ARMCore*", native)
27 self.gprs = _ARMRegisters(self)
28 self.cpsr = self._native.cpsr
29 self.spsr = self._native.spsr