Download File

Back

Currently reading LISTS/ThumbInstructions_by_BLiNXPerson_and_TomatoServal.pkg.doc.txt

Note: NOT ALL ARM CPUS SUPPORT THUMB INSTRUCTIONS!!! LOOK UP THE SYSTEM ONLINE FIRST!!!

-------------------------------------------------------------------------------------------

Credit:
Research: BlinxPerson, TomatoServal
Testing: BlinxPerson

-------------------------------------------------------------------------------------------

Description tl;dr
- RISC code is too fat
- Thumb = Diet ARM
- Smaller, but slower

Lists combinations tl;dr
- Limiter: [Any List] -> Value: NOP
- Limiter: [Any of the S.P.E.C.I.A.L.]* -> Value: Itself
* Lists that end in DEST, INSTRUCTION, or REGISTER

-------------------------------------------------------------------------------------------

Overview:
ARM is a RISC CPU, which boasts a smaller chip size than most other CPUs. Thus, it's a
good choice for mobile technologies, such as handheld gaming consoles. However,
RISC code takes up significantly more space than x86-like processors, due to the
requirement of loading and storing data in order to change it.
To combat this, Acorn Electronics (the creators of ARM) created a shorter instruction
set, called THUMB. THUMB is compressed ARM code, which is decoded into its ARM
counterpart before executing. CPUs using this architecture can swap between two
modes: ARM or THUMB.
As a result, code is shorter (reduced to 60% compared to pure ARM code). However, there
are some limitations to this new code. One of these is code execution time being
longer (increased to 160% compared to pure ARM code). In addition, the CPU has
access to less general-purpose registers in THUMB mode (8 as opposed to 12).

To see what individual lists do, please refer to the following websites:
- http://bear.ces.cwru.edu/eecs_382/ARM7-TDMI-manual-pt3.pdf
- https://www.cs.princeton.edu/courses/archive/fall12/cos375/ThumbRefCard.pdf


-------------------------------------------------------------------------------------------

S.P.E.C.I.A.L. (Serval Person Engineered Combinational Instruction All-Purpose Lists):
Some of the lists have funny names, like "DEST", "INSTRUCTION", etc. That's because
they do not represent individual CPU instructions, but a passthrough combination of
lists that do many different functions. Below are descriptions of what their names
mean:
- DEST -------- Changes the destination the opcode goes to
- INSTRUCTION - Changes the instruction the opcode performs
- REGISTER ---- Changes the register(s) the opcode acts on