85 lines
3.6 KiB
Markdown
85 lines
3.6 KiB
Markdown
# C — Freestanding RV32I and K&R
|
||
|
||
Status: C01–C13 gotowe; seria C zakończona przed rozpoczęciem serii C++.
|
||
|
||
```text
|
||
C · Freestanding RV32I and K&R
|
||
├── C01 · ASM, C and GCC
|
||
├── C02 · .bss, .data and static storage
|
||
├── C03 · ABI and Stack Frame
|
||
├── C04 · Types, Operators and Expressions [K&R 2]
|
||
├── C05 · Control Flow [K&R 3]
|
||
├── C06 · Functions and Program Structure [K&R 4]
|
||
├── C07 · Pointers, Arrays and Linear Allocator [K&R 5]
|
||
├── C08 · Structures and Linked State [K&R 6]
|
||
├── C09 · smalloc, sbrk and minimal libc
|
||
├── C10 · RV32I Traps and Interrupt Control
|
||
├── C11 · Machine Timer and Periodic Work
|
||
├── C12 · UART — polling and interrupts
|
||
└── C13 · GPIO, Edges and Debounce
|
||
```
|
||
|
||
RV32I ASM jest osobną serią-prerekwizytem. C01–C03 tworzą przejście z
|
||
freestanding assemblera do środowiska C, ale pozostają kartami serii C,
|
||
ponieważ ich wynikiem jest rozumienie uruchomienia i ABI programu C.
|
||
|
||
## Układ każdego przykładu: A1–A8
|
||
|
||
Każdy przykład źródłowy w karcie serii C jest osobnym taskiem i jawnie
|
||
odpowiada na komplet pytań A1–A8:
|
||
|
||
```text
|
||
A1 CONTEXT granica systemu i odpowiedzialność przykładu
|
||
A2 STRUCTURE typy, obiekty, reprezentacja i ownership
|
||
A3 DISPATCH granica wywołania, callbacku albo ISR
|
||
A4 APPLICATION konkretne funkcje, dane i inwariant przykładu
|
||
A5 FLOW kolejność wykonania oraz checkpointy
|
||
A6 STATE stan, lifetime i przejścia wartości
|
||
A7 RUNTIME ABI, rejestry, adresy, sekcje ELF i wynik pomiaru
|
||
A8 PATTERNS nazwana, rzeczywiście wielokrotnego użytku decyzja
|
||
```
|
||
|
||
A1–A8 jest profilem pytań, a nie nakazem tworzenia ośmiu dekoracyjnych
|
||
diagramów. Każda pozycja ma status `enabled` albo `unavailable`. Widok
|
||
`enabled` musi wnosić odrębny dowód; `unavailable` zawiera konkretny powód.
|
||
Wartościowy opis tekstowy jest pełnoprawnym widokiem. Diagram powstaje tylko
|
||
wtedy, gdy relacja, kolejność lub stan są mniej czytelne w krótkim tekście.
|
||
|
||
Dla C04–C06 nowe źródło JSON, TeX, HTML i nowy PDF są dodawane obok
|
||
historycznych kart. Oryginalne `doc/main.tex`, PDF-y oraz przykłady w
|
||
`src/tasks/` pozostają niezmienionym materiałem referencyjnym.
|
||
|
||
Pełne cele C10–C13 i granica roku znajdują się w
|
||
`series/inf/lab-rv32i-c-pointers-arrays/guidelines/year-01-interrupts-to-year-02-freertos.md`.
|
||
|
||
## Stan odbioru serii C — 2026-07-20
|
||
|
||
Każda karta ma wygenerowane źródło JSON, widok web i nowy PDF. Odbiór
|
||
potwierdza dokładną kolejność A1–A8 w każdym tasku, jawne uzasadnienie każdego
|
||
N/D, poprawny JSON i JavaScript, poprawność PDF według `qpdf` oraz brak pustych,
|
||
anonimowych i przepełnionych stron. Przykłady uruchamialne przeszły właściwe
|
||
testy hostowe i/lub wyrocznie Hazard3.
|
||
|
||
```text
|
||
karta przykłady bloki A1–A8
|
||
C01 3 24
|
||
C02 4 32
|
||
C03 2 16
|
||
C04 12 96
|
||
C05 8 64
|
||
C06 11 88
|
||
C07 12 96
|
||
C08 4 32
|
||
C09 5 40
|
||
C10 3 24
|
||
C11 3 24
|
||
C12 3 24
|
||
C13 4 32
|
||
RAZEM 74 592
|
||
```
|
||
|
||
PDF-y mają łącznie 180 stron. Spośród 592 widoków 508 ma stan `enabled`, a 84
|
||
ma stan `unavailable` z konkretnym powodem. Historyczne źródła C04–C06 nadal są
|
||
materiałem referencyjnym: nowy układ nie nadpisuje `doc/main.tex`, starych
|
||
PDF-ów ani przykładów w `src/tasks/`.
|