Opis repozytorium

This commit is contained in:
Jan Potocki
2020-06-22 18:02:58 +02:00
parent 5f9799c55c
commit 9a1f4a0fe7
2 changed files with 36 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
/*
* ------------------------------------------------------------
* "THE BEERWARE LICENSE" (Revision 42):
* <MKjanek32> wrote this code. As long as you retain this
* notice, you can do whatever you want with this stuff. If we
* meet someday, and you think this stuff is worth it, you can
* buy me a beer in return.
* ------------------------------------------------------------
*/
+27
View File
@@ -0,0 +1,27 @@
# AK2 - ARMv7 lab 2020
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.
Programy były testowane na płytce PandaBoard, ale powinno dać się uruchomić je również na Raspberry Pi 2 i kolejnych generacjach.
Przydatne linki:
* ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition opis architektury ARMv7:
https://static.docs.arm.com/ddi0406/c/DDI0406C_C_arm_architecture_reference_manual.pdf
* ARM Instruction Set Reference Guide spis wszystkich rozkazów asemblera ARM:
https://static.docs.arm.com/100076/0100/arm_instruction_set_reference_guide_100076_0100_00_en.pdf
* Linux System Call Table spis funkcji systemowych Linuxa dla architektur x86 i ARM w przejrzystej formie:
https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md
* Procedure Call Standard for the ARM Architecture opis konwencji wywołań ARM używanej między innymi w systemach z rodziny Linux:
https://static.docs.arm.com/ihi0042/g/aapcs32.pdf
* Using as dokumentacja GNU Assembler, opis składni:
https://sourceware.org/binutils/docs/as/
* C++ reference/C reference dokumentacja języków C/C++ (przydatne przy łączeniu kod w C i asemblerze):
https://en.cppreference.com/w/
* Opis podstawowych typów w językach C/C++ i ich długości w różnych modelach danych:
https://en.cppreference.com/w/cpp/language/types
* Opis funkcji printf i jej ciągów formatujących:
https://en.cppreference.com/w/cpp/io/c/fprintf
* Opis funkcji scanf i jej ciągów formatujących:
https://en.cppreference.com/w/cpp/io/c/fscanf
UWAGA:
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:
https://github.com/thoughtpolice/enable_arm_pmu