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
|
.syntax unified
.cpu cortex-m0plus
.thumb
.type main, %function
.global main
main:
bl start_xosc
bl setup_clocks
bl setup_gpio
bl setup_uart
b assembler
assembler: LDR R0, =0x20001000 // SRAM_BASE
MOV R11, R0
ADDS R1, R0, 1 // JUMP ADDRESS
MOV R12, R1
1: BL PROMPT // SHOW PROMPT
BL assemble
B 2f // TODO condition
BX R12
2: MOV R7, R11 // STORE INSTRUCTION WORD
STRH R6, [R7]
MOVS R0, '\r // NEW LINE
BL uart_send
BL PROMPT // REWRITE PROMPT
ADDS R7, 2 // INCREMENT POINTER
MOV R11, R7
MOVS R0, '\r
BL uart_send
MOVS R0, '\n
BL uart_send
B 1b
PROMPT: PUSH {LR}
MOV R0, R11 // CURRENT ADDRESS
BL send_hex
MOVS R0, ' // SPACE
BL uart_send
MOV R1, R11 // CURRENT CONTENTS
LDRH R0, [R1]
BL send_hex
MOVS R0, ' // SPACE
BL uart_send
POP {PC} // RETURN
|