|
@@ -0,0 +1,27 @@
|
|
1
|
+# AK2 - ARMv7 lab 2020
|
|
2
|
+Eksperymenty z asemblerem ARMv7, w tym napisane na tę architekturę zadania doktora Tadeusza Tomczaka (lub wariacje na ich temat) z zajęć laboratoryjnych z Architektury komputerów 2, standardowo pisane na x86.
|
|
3
|
+Programy były testowane na płytce PandaBoard, ale powinno dać się uruchomić je również na Raspberry Pi 2 i kolejnych generacjach.
|
|
4
|
+
|
|
5
|
+Przydatne linki:
|
|
6
|
+* ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition – opis architektury ARMv7:
|
|
7
|
+https://static.docs.arm.com/ddi0406/c/DDI0406C_C_arm_architecture_reference_manual.pdf
|
|
8
|
+* ARM Instruction Set Reference Guide – spis wszystkich rozkazów asemblera ARM:
|
|
9
|
+https://static.docs.arm.com/100076/0100/arm_instruction_set_reference_guide_100076_0100_00_en.pdf
|
|
10
|
+* Linux System Call Table – spis funkcji systemowych Linuxa dla architektur x86 i ARM w przejrzystej formie:
|
|
11
|
+https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md
|
|
12
|
+* Procedure Call Standard for the ARM Architecture – opis konwencji wywołań ARM używanej między innymi w systemach z rodziny Linux:
|
|
13
|
+https://static.docs.arm.com/ihi0042/g/aapcs32.pdf
|
|
14
|
+* Using as – dokumentacja GNU Assembler, opis składni:
|
|
15
|
+https://sourceware.org/binutils/docs/as/
|
|
16
|
+* C++ reference/C reference – dokumentacja języków C/C++ (przydatne przy łączeniu kod w C i asemblerze):
|
|
17
|
+https://en.cppreference.com/w/
|
|
18
|
+ * Opis podstawowych typów w językach C/C++ i ich długości w różnych modelach danych:
|
|
19
|
+ https://en.cppreference.com/w/cpp/language/types
|
|
20
|
+ * Opis funkcji printf i jej ciągów formatujących:
|
|
21
|
+ https://en.cppreference.com/w/cpp/io/c/fprintf
|
|
22
|
+ * Opis funkcji scanf i jej ciągów formatujących:
|
|
23
|
+ https://en.cppreference.com/w/cpp/io/c/fscanf
|
|
24
|
+
|
|
25
|
+UWAGA:
|
|
26
|
+Pomiar cykli zegarowych procesora za pomocą licznika CCNT nie jest w przypadku architektury ARM tak samo prosty, jak posługiwanie się licznikiem TSC znanym z architektury x86. Konieczne jest załadowanie dodatkowego modułu jądra, który w trybie systemu operacyjnego wykona kilka instrukcji zezwalających użytkownikowi na odczyt CCNT, może być też potrzebne zablokowanie stanów bezczynności (idle) procesora. Zainteresowani mogą spróbować z modułem jądra stąd:
|
|
27
|
+https://github.com/thoughtpolice/enable_arm_pmu
|