From 9a1f4a0fe7da247bec31902890d26ebc039d1c5c Mon Sep 17 00:00:00 2001 From: Jan Potocki Date: Mon, 22 Jun 2020 18:02:58 +0200 Subject: [PATCH] Opis repozytorium --- LICENSE | 9 +++++++++ README.md | 27 +++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1f14cc2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +/* + * ------------------------------------------------------------ + * "THE BEERWARE LICENSE" (Revision 42): + * 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. + * ------------------------------------------------------------ +*/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc9dc91 --- /dev/null +++ b/README.md @@ -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