AArch64/ARM64 Tutorial

Glossary


Address: A location in Memory.
Argument: An input of a Function.
Assembler: Tool used to translate Assembly Language (present in a File) into Machine Code (blocks of binary values)
Assembler Directive: A (non-CPU) instruction that tells the Assembler extra information about Assembly Instruction(s) and/or Data present in a Source File.
Assembly (Language; short - ASM):  A Computer Programming Language that is specific to a CPU or line/family of CPUs. It is a readable version of Machine Code (blocks of binary values).
Big Endian: A design where the CPU does no modifications to values being transferred to/from Memory. The design requires the MSB to always be bit 0. Bits increase in their assigned number when going closer from the MSB to the LSB.
Binary (value): The lowest number form in Computing. Values can only be 0 or 1. Binary values may sometimes be prepended with a "0b".
Binary Operation: Any operation that only involves Bits as inputs and outputs.
Bit: Alternate name for a Binary value.
Block (alternative - Cache Block): A group of Cached contents where the starting Address of the Cache contents is an aligned Address. For something such as the Cortex A-57 CPU, Blocks use a 64-byte aligned Address.
Broadcast: When an instruction makes the CPU "tell" a Core about a recently issued instruction from a different Core.
Byte: A Hexadecimal value that is 8 bits in length
Breakpoint: A GDB command used to halt a Program.
Buffer: A reserved region of Memory that will be utilized by the input(s) and/or output(s) of a Function
Cache: Data and/or Instructions on a specialized Chip that can be accessed quicker by the CPU in comparison to Physical Memory.
Callee: The instructions of the Function that do not involve calling a new Function.
Callee-Saved Registers: GPRs 19 thru 28 of an ARMv8 CPU.
Caller: Instructions that are responsible for writing the Input(s) of a Function, call of Function, and process the Output(s) of a Function.
Carry (Flag): A Binary Value that gets Set when an Unsigned Hexadecimal result cannot properly be displayed in a Register.
Cast(ing) Out: Refers to the action of removing a Block out of the Cache.
Clear: Verb for setting a Binary Value to 0. Can also mean setting any non-Binary value to 0.
Compiler: Tool used to translate a non-Assembly Language into an Assembly Language which will then use an Assembler to translate that to Machine Code.
Cortex A-57: The CPU of the Nintendo Switch.
Digit: A Hexadecimal value that is 4 bits in length
Double-word: A Hexadecimal value that is 64-bits in length
Epilogue: A group of instructions that is at the end of a Function for the purpose of restoring saved Registers, and Data. The last instruction of the Prologue will return the execution flow of the Program to the Function's Return Address.
Exception: A halt in the regular execution flow of the Program. Most of the time this term refers to a Program Crash.
Exception Level (short - EL): A privilege level that a Program can run under for ARMv8.
Extended (Register): A GPR where all 64-bits are being used by the Instruction
False: Binary value of 0.
Fetcher (alternative - Instruction Fetcher): A mechanism of the CPU that reads Instructions from the Program and places the Instruction into a Queue to then be sent for Execution.
Floating Point (Value): A Hexadecimal value that has a special format to handle fractional and precise numbers.
Floating Point Register (short - FPR): A register meant for Floating Point use.
Function: A subroutine of code that usually takes in input(s), performs a specific task(s), and then gives back an output(s).
General Purpose Register (short - GPR): A Register meant for whole Integer use, or for a place to keep a Memory Address at.
Global Variable Registers (short - GVRs): Alternate term for Callee-Saved Registers.
GNU AArch64: The Assembler used for the Tutorials
GNU Debugger (short - GDB): Software used to help find and fix bugs in a Program. Commonly used alongside QEMU to fix bugs in Programs that were originally written in Assembly.
GPR: Short for General Purpose Register
Halfword: A Hexadecimal value that is 16 bits in length
Hex: Short for Hexadecimal
Hexadecimal (short - Hex): A Base 16 numbering system commonly used in Computer Programming. Hex values are usually prepended with a "0x".
High: Binary Value of 1.
Instruction: A block (fixed length for the case of ARM) of binary values that gets intepreted by the CPU to preform a task.
Lane: A specific bit portion within a Vector Register.
Least Significant Bit (short - LSB): The far righthand bit of any value. For Little Endian Systems, this is also known as "Bit 0".
Line (Cache): Alternate term for Block.
Little Endian: Used by all ARMv8 CPU's by default. A design where the CPU does byte-swap modifications to values being transferred to/from Memory. The design requires the LSB to always be bit 0. Bits decrease in their assigned number when going closer from the MSB to the LSB.
Logical Operation: An Binary Operation that bases a result on decision as to whether the operation performed is True or False.
Loop: Any instruction(s) that is meant to be executed in a repeated fashion
Low: Binary Value of 1.
Lower Bits(s): Refers to any bits of a value that are of the righthand side.
Macro: An Assembler Directive for assigning a Name to an instruction or group of instructions.
Memory: An area where the CPU executes Instructions of a Program, and where it stores and loads Data
Memory Address: Alternative term for just Address. A location in Memory.
Memory Chip (alternative - RAM chip): Piece of hardware that is for Memory
Most Significant Bit (short - MSB): The far lefthand bit of any value.
Non-Extended: A GPR where the lower 32-bits only are being used by an Instruction
Non-Volatile Registers: Alternate term for Callee-Saved Registers.
Null (noun): Zero
Null (verb): Any action that sets a value to Zero.
Overflow (Flag): A Binary Value that gets set when an Unsigned Hexadecimal result cannot be displayed in a Register, due to an Instruction.
Program Counter (short- PC): A read-only Register that contains the Address of the currently executing Instruction.
Prologue: A group of instructions that is at the start of a Function for the purpose of backing up the Function's Return Address, certain Registers, and certain Data.
Pseudo-Op: An Assembler Directive for writing numerical values in a Source File.
Push: Refers to the action of adding a Block to the Cache
Physical Address: A real Memory Address of a Memory Chip
Physical Memory: Refers to the real Address space of a Memory Chip
Physical Mode: When a Program executes Instructions residing in Physical Memory.
QEMU: Emulation software that can mimic many CPU architectures
Quadword: A Hexadecimal value is 128 bits in length
RAM: Alternate term for Memory
Register: A data holding place of a CPU.
Set: Verb for an instruction setting a Binary Value to 1
SIMD: Stands for Single Integer Multiple Data. Refers to ARM's SIMD Unit. This unit allows you to use the FPRs as Vector Registers. SIMD based instructions are able to take in a single input and apply mulitple outputs into the lanes of a Vector.
Signed: Negative values are possible.
Source (Text) File: A text file (usually has filetype of ".s" or ".S") that contains Assembly Language to be translated to Machine Code by the Assembler.
Special Purpose Register (short - SPR): A register that has one or a handful of specific unique purposes, and that register alone is usually the only register responsible for handling said purposes.
Stack: A reserved region of Memory that holds Stack Frames.
Stack Frame: A portion of the Stack that holds saved Registers, Data, Function Return Addresses, and Addresses of other Frames.
Stack Pointer (short - SP): A Register that should always contain the Address to the very top of the Stack.
String: An continuous line of bytes where each Byte represents an ASCII Character. Most Strings end in a Null byte.
Symbol: An Assembler Directive for assigning names to numbers or number operations.
True: Binary Value of 1
Truth Table: A small table showing all possible outputs of a specific Logical Operation.
Unsigned: All values are to be treated as positive, excluding Zero
Upper Bit(s): Refers to any bits of a value that are of the lefthand side.
Vector Register: A FPR that is being used by a Vector based Instruction. Can contain integers or floating points.
Virtual Address: A translated Physical Address used for mapping within Virtual Memory
Virtual Memory: Address Space that is a modified copy of Physical Memory. Most programs run on Virtual Memory instead of Physical Memory.
Virtual Mode: When a Program is executed Instructions that reside in Virtual Memory.
Word: A Hexadecimal value that is 32-bits in length


Tutorial Index