smallworld.platforms

class smallworld.platforms.Platform(architecture: Architecture, byteorder: Byteorder)

Platform metadata/configuration storage class.

architecture: Architecture

Architecture and mode.

byteorder: Byteorder

Endianness.

class smallworld.platforms.Architecture(*values)

Architecture and mode.

Names take the form {ARCH}_{MODE} where {ARCH} and {MODE} match the regex [A-Z0-9]+.

Values are lowercase, kebab-case.

X86_32 = 'x86-32'

32-bit x86 supporting SSE extensions.

X86_64 = 'x86-64'

64-bit x86 supporting AVX2 extensions.

X86_64_AVX512 = 'x86-64-avx512'

64-bit x86 supporting AVX512 extensions.

AARCH64 = 'aarch64'

arm64 v8a or later

M68K = 'm68k'

Motorola 68k

MIPS32 = 'mips32'

MIPS32 rel 2

MIPS64 = 'mips64'

MIPS32 rel 2

POWERPC32 = 'powerpc32'

32-bit PowerPC

POWERPC64 = 'powerpc64'

64-bit PowerPC

ARM_V5T = 'arm-v5t'

arm32 v5t

ARM_V6M = 'arm-v6m'

arm32 v6m, ARM isa

ARM_V6M_THUMB = 'arm-v6m-thumb'

arm32 v6m, THUMB isa

ARM_V7M = 'arm-v7m'

arm32 v7m

ARM_V7R = 'arm-v7r'

arm32 v7r

ARM_V7A = 'arm-v7a'

arm32 v7a

LOONGARCH32 = 'loongarch32'

32-bit LoongArch

LOONGARCH64 = 'loongarch64'

64-bit LoongArch

RISCV64 = 'riscv-64'

64-bit RiscV

XTENSA = 'xtensa'

Xtensa

MSP430 = 'msp430'

TI msp430

MSP430X = 'msp430x'

TI msp430x

class smallworld.platforms.Byteorder(*values)

Endianness.

BIG = 'big'

Big endian - most significant bit first.

LITTLE = 'little'

Little endian - least significant bit first.

class smallworld.platforms.ABI(*values)

Application binary interface.

Names match the regex [A-Z]+.

Values are lowercase, kebab-case.

SYSTEMV = 'system-v'

System V.

CDECL = 'cdecl'

Microsoft cdecl.

VECTORCALL = 'vectorcall'

Microsoft vectorcall.

FASTCALL = 'fastcall'

Microsoft fastcall.

NONE = 'none'

No ABI

class smallworld.platforms.RegisterDef(name: str, size: int)
class smallworld.platforms.RegisterAliasDef(name: str, size: int, parent: str, offset: int)