Hardware Reference
In-Depth Information
3
A
IS
$0
4
size
IS
$1
5
Locale Register
6
return
∗
IS
$2
7
i
linker Index
IS
$3
8
∗
Nur VOR dem rekursiven Aufruf benotigen wir:
9
j
rechter index
IS
$4
10
k
IS
$5
11
l
linkes Element
IS
$6
12
r
rechtes Element
IS
$7
13
pivot
IS
$8
Pivot-Element (Partitionierung)
14
tmp
IS
$9
15
16
Einige lokale Register auch z. Abliefern von Return-Werten
17
retarg
∗
fur aktuelle Return-Adresse
IS
$4
18
arg
Argument: Bereichsanfang
IS
$5
19
sizearg IS
Argument: Bereichsgroße
$6
20
21
∗
Kleine Bereiche werden mit Insertion Sort sortiert.
22
Deren Große kann hier eingestellt werden.
23
cutoff
∗
IS
10*8
24
25
:QSort
CMP
tmp,size,cutoff
26
Also Insertion Sort
BN
tmp,:ISort
27
28
Jetzt gehts endlich mit Quicksort los
29
4H
∗
Return-Adresse sichern
GET
return,:rJ
30
31
∗
Pivot bestimmen
32
∗
Erstes, letztes und mittleres Element des Bereichs
33
SET
i,0
34
LDO
l,A,i
35
SUBU
j,size,8
36
LDO
r,A,j
37
mittleres Element
SR
k,size,1
38
LDO
pivot,A,k
39
40
∗
Erstes, letztes und mittleres Element sortieren...
41
CMP
tmp,l,r
42
PBNP
tmp,1F
43