# ARM Assembly Data Types and Registers

Van Chan Ngo · January 20, 2021

In this post of ARM assembly basics, we will talk about the data types and registers. So let’s get started.

## Data types

Similar to high-level programming languages, e.g. C/C++, ARM supports different types of data. Data can be 1:

• signed and unsinged bytes
• signed and unsinged halfwords
• signed and unsinged words

For example, they can be used with load and store operations as follows:

ldr         # Load Word
ldrh        # Load unsigned Half Word
ldrsh       # Load signed Half Word

The number of registers depends on the versions of ARM processors. However, only 16 first general purpose registers are accessible by user-level code (of course, there are some exceptions). But, here we assume that user-level code will only access the general purpose registers 0-15. The following table lists them and their descriptions 1.