blob: bb78be61fbdf0eef279e8a3a2e57446b2b4e8e32 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# ARM assembly for fun and profit
I'm starting over.
## Octedit
This is a bare-minimum memory editor
which fits entirely within the 256-byte boot sector
of the Raspberry Pi Pico's on-board flash.
Most of the space is dedicated
to setting up the clocks, GPIO, and UART.
To use, enter a series of octal halfwords over UART
then press G to jump to the beginning of SRAM
and begin executing them as instructions.
This is the first step in bootstrapping the whole system.
## Hexedit
A more robust and user-friendly memory editor,
which uses hexadecimal instead of octal,
validates input characters,
and displays the address and contents
of the halfword currently being edited.
The machine code for this editor
can be keyed in using octedit
as a series of 16-bit octal halfwords.
## Assembler
This is a single-pass assembler
supporting most of the ARMv6-M instruction set
using a simplified instruction syntax
in which there are
no labels,
only octal literals,
and unambiguous instruction mnemonics.
It does not allow the user to type invalid instructions.
## Better Assembler
Goals:
- A subset of GNU `as` syntax
- Reasonably extensible
- Small code size
## LISP Interpreter
A LISP interpreter for the Raspberry Pi Pico.
|