projects
/
cascardo
/
blix.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
Cause illegal instruction
[cascardo/blix.git]
/
blix.S
1
.global _start
2
_start:
3
li a1, 2
4
csrs sstatus, a1
5
la a1, _vec
6
csrw stvec, a1
7
li a7, 1
8
la a1, _hello
9
jal puts
10
csrr a2, stvec
11
jal putl
12
csrw 0xfff, a0
13
halt:
14
j halt
15
16
putl:
17
andi a0, a2, 0xf
18
addi a0, a0, 0x30
19
slti a1, a0, 0x3A
20
bne a1, zero, _next
21
addi a0, a0, 7
22
_next:
23
ecall
24
srli a2, a2, 4
25
beq a2, zero, exit2
26
j putl
27
exit2:
28
li a0, 0xa
29
ecall
30
ret
31
32
puts:
33
lb a0, (a1)
34
beq a0, zero, exit
35
ecall
36
addi a1, a1, 1
37
j puts
38
exit:
39
ret
40
41
_hello:
42
.ascii "Hello, world!\n"
43
.byte 0
44
45
.align 8
46
_vec:
47
li a7, 1
48
la a1, _exception
49
jal puts
50
csrr a2, scause
51
call putl
52
loop2:
53
j loop2
54
55
_exception:
56
.ascii "exception\n"
57
.byte 0