[ Home | About | Getting Started | Screenshots | Source Components | Project Page ]
The system is split into three main subsystems:
The subsystems are then decomposed into components. The components may be logically grouped to form lower-level subsystems, but this is not represented in the component naming or packages. Additionally, the components may be split into logical groupings of packages; where appropriate, this is noted below.
THIS TABLE IS INCOMPLETE!
| Component | Packagenet.sf.snarej. |
Description |
|---|---|---|
Core |
||
| snarejCore | core |
Common core functionality. This is currently a bag of 'stuff'. |
core.config |
Configuration framework. | |
core.plugin |
Pre-Java 6 equivalent of ServiceLoader.
Needs to be refactored to use ServiceLoader when Java 6
is available on the system.
|
|
core.source |
Code annotations that are retained only in the source. Of particular note
is ComponentApi, which can be used to mark classes that are
public but are not part of the public API of the component.
|
|
core.util |
Other utility classes.
Needs to be tidied! |
|
ARM Emulation |
||
| snarejArmModel | arm.model
| Model of the ARM execution. |
arm.model.memory |
Model of system memory. The key interface is MemoryManager.
Page support needs to be removed (it was slow and ugly) and be replaced with support for segments (size defined at construction, but not limited to 4KiB, allowing access to a buffer if possible). |
|
arm.model.register
|
Model of registers. The only class is RegisterSet.
|
|
| snarejArmInstructionSet | arm.model
| Model of the ARM instruction set. |
arm.instructionset.instruction |
Instructions for the ARM emulator. Each instruction type is modelled by one
class. For example, instructions such as ADD, SUB,
and CMP are all provided by ArithmeticInstruction.
The visitor pattern is used to allow a loose coupling between the instruction
types and the execution environment; see InstructionTarget.
|
|
arm.instructionset.disassembler |
Provides the mapping from op codes to Instruction instances.
|
|
arm.instructionset.disassembler
(From generation source section)
|
The OpCodes class generates the very large if-else-if monster
for ArmDisassembler. It operates on a mask system derived from
the disassembler in GDB (file arm-dis.c); see
Google's
cache
or here.
|
|