eolas/zk/Assembly.md
2024-04-09 07:30:04 +01:00

46 lines
1.4 KiB
Markdown

---
id: 2v5c
title: Assembly
tags: [CPU]
created: Tuesday, March 12, 2024
---
# Assembly
- Assembly is one level up from machine code and provides a more human-friendly
abstraction layer
- An assembly instruction is a _mneumonic_ that comprises an "op code" plus
operands
- It is translated back to machine code by an assembler for the computer to
execute.
## Example instruction
We can translate the machine instruction `e3a07004` into the assembly
instruction `mov r7, #4`. This translates to: _move the value number 4 to the
register r7_.
## Assemblers
Although assembly is useful for humans, computers still work at the level of
machine code. Therefore you need an **assembler** to translate the assembly code
to machine code. An assembly language text file is fed into an assembler and a
binary object file containing machine code is returned.
A disassembler does the opposite: translate machine code into assembly.
## Relation to instruction set architectures
- the ISA defines the hardware capabilities and the instructions that can be run
on the hardware
- machine code is a binary representation of these instructions and can be
directly executed by the CPU
- humans use an assembly language version of the machine code which is then
translated back to machine code for the computer to execute.
## Related notes
[[Hexadecimal_number_system]], [[Instruction_set_architectures]],
[[CPU_architecture]]