Files

3.6 KiB
Raw Permalink Blame History

C — Freestanding RV32I and K&R

Status: C01C13 gotowe; seria C zakończona przed rozpoczęciem serii C++.

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. C01C03 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: A1A8

Każdy przykład źródłowy w karcie serii C jest osobnym taskiem i jawnie odpowiada na komplet pytań A1A8:

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

A1A8 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 C04C06 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 C10C13 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ść A1A8 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.

karta  przykłady  bloki A1A8
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 C04C06 nadal są materiałem referencyjnym: nowy układ nie nadpisuje doc/main.tex, starych PDF-ów ani przykładów w src/tasks/.