all repos — mgba @ 51030d98fd01679834abf8d99812ac3e5fe0793e

mGBA Game Boy Advance Emulator

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