Jan Potocki vor 4 Jahren
Commit
5f9799c55c
11 geänderte Dateien mit 269 neuen und 0 gelöschten Zeilen
  1. 13
    0
      fibb/Makefile
  2. 26
    0
      fibb/fibb.s
  3. 16
    0
      fibb/fibb_c.c
  4. 30
    0
      fibb/fibb_ccnt.c
  5. 35
    0
      fibb/sec_ccnt.c
  6. 8
    0
      fibb/timestamp.s
  7. 10
    0
      hello/Makefile
  8. 21
    0
      hello/hello.s
  9. 7
    0
      lab2/Makefile
  10. 103
    0
      lab2/mul.s
  11. BIN
      lab2/mul.tar.bz2

+ 13
- 0
fibb/Makefile Datei anzeigen

@@ -0,0 +1,13 @@
1
+all: fibb_arm fibb_ccnt sec_ccnt
2
+
3
+fibb_arm: fibb_c.c fibb.s
4
+	gcc fibb.s fibb_c.c -o fibb_arm
5
+
6
+fibb_ccnt: fibb_ccnt.c fibb.s timestamp.s
7
+	gcc fibb.s timestamp.s fibb_ccnt.c -o fibb_ccnt
8
+
9
+sec_ccnt: sec_ccnt.c timestamp.s
10
+	gcc sec_ccnt.c timestamp.s -o sec_ccnt
11
+
12
+clean:
13
+	rm fibb_arm fibb_ccnt sec_ccnt

+ 26
- 0
fibb/fibb.s Datei anzeigen

@@ -0,0 +1,26 @@
1
+.global fibb
2
+.type fibb, %function
3
+
4
+.text
5
+fibb:
6
+push {r4, lr}
7
+
8
+cmp r0, #0
9
+moveq r0, #0
10
+popeq {r4, pc}
11
+
12
+cmp r0, #1
13
+moveq r0, #1
14
+popeq {r4, pc}
15
+
16
+sub r0, r0, #1
17
+push {r0}
18
+bl fibb
19
+mov r4, r0
20
+pop {r0}
21
+
22
+sub r0, r0, #1
23
+bl fibb
24
+add r0, r0, r4
25
+
26
+pop {r4, pc}

+ 16
- 0
fibb/fibb_c.c Datei anzeigen

@@ -0,0 +1,16 @@
1
+#include <stdio.h>
2
+
3
+// Jan Potocki 2020
4
+
5
+unsigned long fibb(unsigned long n);
6
+
7
+int main()
8
+{
9
+	unsigned long term, result;
10
+
11
+	scanf("%lu", &term);
12
+	result = fibb(term);
13
+	printf("%lu\n", result);
14
+
15
+	return 0;
16
+}

+ 30
- 0
fibb/fibb_ccnt.c Datei anzeigen

@@ -0,0 +1,30 @@
1
+#include <stdio.h>
2
+
3
+// Jan Potocki 2020
4
+
5
+unsigned long fibb(unsigned long n);
6
+unsigned long timestamp();
7
+
8
+int main()
9
+{
10
+	unsigned long term, result;
11
+	unsigned long tstamp1, tstamp2;
12
+
13
+	scanf("%lu", &term);
14
+	tstamp1 = timestamp();
15
+	result = fibb(term);
16
+	tstamp2 = timestamp();
17
+
18
+	printf("%lu\n", result);
19
+
20
+	if(tstamp2 > tstamp1)
21
+	{
22
+		printf("Cycles: %lu\n", tstamp2-tstamp1);
23
+	}
24
+	else
25
+	{
26
+		printf("Cycles: invalid measure\n");
27
+	}
28
+
29
+	return 0;
30
+}

+ 35
- 0
fibb/sec_ccnt.c Datei anzeigen

@@ -0,0 +1,35 @@
1
+#include <stdio.h>
2
+#include <time.h>
3
+
4
+// Jan Potocki 2020
5
+
6
+unsigned long timestamp();
7
+
8
+int main()
9
+{
10
+	unsigned long tstamp1, tstamp2;
11
+
12
+	tstamp1 = timestamp();
13
+	
14
+	// Tego z jakiegos powodu nie mozna zrobic za pomoca sleep(1)...
15
+	// ...cykle nie sa zliczane prawidlowo - wiec goraca petla
16
+	clock_t t;
17
+	do
18
+	{
19
+		t = clock();
20
+	}
21
+	while(t < CLOCKS_PER_SEC);
22
+
23
+	tstamp2 = timestamp();
24
+
25
+	if(tstamp2 > tstamp1)
26
+	{
27
+		printf("Cycles: %lu\n", tstamp2-tstamp1);
28
+	}
29
+	else
30
+	{
31
+		printf("Cycles: invalid measure\n");
32
+	}
33
+
34
+	return 0;
35
+}

+ 8
- 0
fibb/timestamp.s Datei anzeigen

@@ -0,0 +1,8 @@
1
+.global timestamp
2
+.type timestamp, %function
3
+
4
+.text
5
+timestamp:
6
+isb
7
+mrc p15, 0, r0, c9, c13, 0
8
+mov pc, lr

+ 10
- 0
hello/Makefile Datei anzeigen

@@ -0,0 +1,10 @@
1
+all: hello
2
+
3
+hello: hello.o
4
+	ld hello.o -o hello
5
+
6
+hello.o: hello.s
7
+	as hello.s -o hello.o
8
+
9
+clean:
10
+	rm hello.o hello

+ 21
- 0
hello/hello.s Datei anzeigen

@@ -0,0 +1,21 @@
1
+SYSEXIT = 1
2
+SYSWRITE = 4
3
+STDOUT = 1
4
+
5
+.global _start
6
+
7
+.data
8
+str: .ascii "Hello world!\n"
9
+str_len = . - str
10
+
11
+.text
12
+_start:
13
+mov r7, #SYSWRITE
14
+mov r0, #STDOUT
15
+ldr r1, =str
16
+mov r2, #str_len
17
+swi 0x0
18
+
19
+mov r7, #SYSEXIT
20
+mov r0, #0
21
+swi 0x0

+ 7
- 0
lab2/Makefile Datei anzeigen

@@ -0,0 +1,7 @@
1
+all: mul_arm
2
+
3
+mul_arm: mul.s
4
+	gcc mul.s -o mul_arm
5
+
6
+clean:
7
+	rm mul_arm

+ 103
- 0
lab2/mul.s Datei anzeigen

@@ -0,0 +1,103 @@
1
+SYSEXIT = 1
2
+SYSREAD = 3
3
+SYSWRITE = 4
4
+STDIN = 0
5
+STDOUT = 1
6
+
7
+num_length = 256
8
+word_length = 4
9
+buf_length = num_length * 2
10
+num_words = num_length / word_length
11
+buf_words = buf_length / word_length
12
+
13
+.global main
14
+
15
+.bss
16
+num1: .space num_length
17
+num2: .space num_length
18
+result: .space buf_length
19
+
20
+.text
21
+main:
22
+loop:
23
+mov r7, #SYSREAD
24
+mov r0, #STDIN
25
+ldr r1, =num1
26
+mov r2, #buf_length
27
+swi 0x0
28
+
29
+cmp r0, #buf_length
30
+blt end
31
+
32
+ldr r8, =num1
33
+ldr r9, =num2
34
+ldr r10, =result
35
+
36
+eor r0, r0, r0
37
+
38
+eor r4, r4, r4
39
+
40
+zero:
41
+str r0, [r10, r4, lsl#2]
42
+add r4, r4, #1
43
+cmp r4, #buf_words
44
+blt zero
45
+
46
+eor r4, r4, r4
47
+
48
+loop1:
49
+eor r11, r11, r11
50
+eor r12, r12, r12
51
+
52
+eor r2, r2, r2
53
+
54
+eor r5, r5, r5
55
+
56
+loop2:
57
+ldr r0, [r8, r4, lsl#2]
58
+ldr r3, [r9, r5, lsl#2]
59
+umull r0, r1, r0, r3
60
+
61
+msr apsr_nzcvq, r11
62
+adcs r0, r0, r2
63
+mrs r11, apsr
64
+
65
+mov r2, r1
66
+add r6, r4, r5
67
+
68
+msr apsr_nzcvq, r12
69
+ldr r1, [r10, r6, lsl#2]
70
+adcs r1, r0, r1
71
+str r1, [r10, r6, lsl#2]
72
+mrs r12, apsr
73
+
74
+add r5, r5, #1
75
+cmp r5, #num_words
76
+blt loop2
77
+
78
+add r6, r6, #1
79
+
80
+msr apsr_nzcvq, r11
81
+adc r2, r2, #0
82
+
83
+msr apsr_nzcvq, r12
84
+ldr r1, [r10, r6, lsl#2]
85
+adc r1, r1, r2
86
+str r1, [r10, r6, lsl#2]
87
+
88
+add r4, r4, #1
89
+cmp r4, #num_words
90
+blt loop1
91
+
92
+mov r7, #SYSWRITE
93
+mov r0, #STDOUT
94
+ldr r1, =result
95
+mov r2, #buf_length
96
+swi 0x0
97
+
98
+b loop
99
+
100
+end:
101
+mov r7, #SYSEXIT
102
+mov r0, #0
103
+swi 0x0

BIN
lab2/mul.tar.bz2 Datei anzeigen


Laden…
Abbrechen
Speichern