eolas/zk/Assembly.md

46 lines
1.4 KiB
Markdown
Raw Normal View History

2024-03-12 07:20:03 +00:00
---
id: 2v5c
2024-03-12 07:30:03 +00:00
tags: [CPU]
2024-03-12 07:20:03 +00:00
created: Tuesday, March 12, 2024
---
# Assembly
2024-03-14 14:00:03 +00:00
- Assembly is one level up from machine code and provides a more human-friendly
abstraction layer
2024-03-14 14:10:03 +00:00
- An assembly instruction is a _mneumonic_ that comprises an "op code" plus
operands
2024-03-14 14:30:03 +00:00
- It is translated back to machine code by an assembler for the computer to
execute.
2024-04-09 07:30:04 +01:00
## Example instruction
2024-03-14 14:20:03 +00:00
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_.
2024-04-09 07:30:04 +01:00
## Assemblers
2024-03-14 14:20:03 +00:00
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.
2024-03-14 14:30:03 +00:00
A disassembler does the opposite: translate machine code into assembly.
2024-04-09 07:30:04 +01:00
## Relation to instruction set architectures
2024-03-14 14:30:03 +00:00
- 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.
2024-03-14 14:20:03 +00:00
## Related notes
2024-03-14 14:30:03 +00:00
[[Hexadecimal_number_system]], [[Instruction_set_architectures]],
[[CPU_architecture]]