projects
/
calu.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
progs: added remaining benchmarks and offset correction for timer
[calu.git]
/
progs
/
max.s
1
#include "dt_inc.s"
2
.data
3
.org 0x0
4
arr:
5
.fill 2
6
.fill 3
7
.fill 5
8
.fill 7
9
.fill 11
10
.fill 13
11
.fill 17
12
.fill 19
13
.fill 23
14
.fill 29
15
.fill 31
16
.fill 37
17
.fill 41
18
.fill 43
19
.fill 47
20
.fill 53
21
22
str:
23
.ascii "hier das ergebnis: "
24
.text
25
.org 0x0
26
start:
27
br+ main
28
br+ main
29
ret
30
main:
31
call+ u_init
32
call+ u_recv_byte
33
call u_send_newline
34
35
; benchprolog
36
call t_init
37
call t_stop
38
ldis r1, 0
39
call t_valset
40
call t_start
41
; /benchprolog
42
43
; max start
44
ldis r1, 16
45
ldil r2, arr@lo
46
ldih r2, arr@hi
47
48
call+ max
49
; max end
50
51
; benchepilog
52
push r0
53
call+ t_init
54
call+ t_stop
55
call+ t_valget
56
subi r0, r0, 0xc ; offset abziehen
57
pop r3
58
push r0
59
push r3
60
; /benchepilog
61
62
call u_init ; weil r10 ueberschrieben wird
63
ldis r1, str@lo
64
ldih r1, str@hi
65
ldis r2, 19
66
call u_send_string
67
68
pop r1
69
call+ u_send_uint
70
call u_send_newline
71
pop r1
72
call+ u_send_uint
73
call u_send_newline
74
75
br+ main
76
77
max:
78
; r1 = len
79
; r2 = arr
80
; r4 = arr[x]
81
; r0 = x = arr[0]
82
ldw r0, 0(r2)
83
subi r1, r1, 1
84
maxloop:
85
ldw r4, 4(r2)
86
cmp r0, r4
87
movlt r0, r4
88
subi r1, r1, 1
89
addid r2, r2, 4
90
brnq+ maxloop
91
ret+