ghidra/Ghidra/Processors/Toy/data/languages/toy.sinc

52 lines
1.2 KiB
Plaintext

# Main slaspec must define ENDIAN and ALIGN
@ifndef WORDSIZE
@define WORDSIZE "1"
@endif
@ifndef ALIGN
@define ALIGN "1"
@endif
define endian=$(ENDIAN);
define alignment=$(ALIGN);
define space ram type=ram_space size=$(SIZE) wordsize=$(WORDSIZE) default;
define space register type=register_space size=2;
define register offset=0x1000 size=$(SIZE) [
r0 r1 r2 r3 r4 r5 r6 r7
r8 r9 r10 r11 r12 sp lr pc
];
# STATUS REGISTER MAP: (LOW)
# C - CARRY
# Z - ZERO
# N - NEGATIVE
# V - OVERFLOW
define register offset=0x1100 size=1 [
C Z N V
];
@if SIZE == "4"
@define HALFSIZE "2"
@endif
@if SIZE == "8"
@define HALFSIZE "4"
@endif
@if ENDIAN == "little"
define register offset=0x1000 size=$(HALFSIZE) [
r0l r0h r1l r1h r2l r2h r3l r3h r4l r4h r5l r5h r6l r6h r7l r7h
r8l r8h r9l r9h r10l r10h r11l r11h r12l r12h spl sph lrl lrh pcl pch
];
@else # ENDIAN == "big"
define register offset=0x1000 size=$(HALFSIZE) [
r0h r0l r1h r1l r2h r2l r3h r3l r4h r4l r5h r5l r6h r6l r7h r7l
r8h r8l r9h r9l r10h r10l r11h r11l r12h r12l sph spl lrh lrl pch pcl
];
@endif # ENDIAN