Kompliator C/C++ Sekcja 14
|
|
- Adrian Ciesielski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Kompliator C/C++ Sekcja 14
2 Cechy kompilatora C ADSP-211xx Kompiluje pliki źródłowe C i C++ zgodne ze standardem ANSI/ISO - obsługuje proponowany standard Zagnieżdzone C++ - definiuje podzbiór pełnego standardu C++ ISO/IEC 14882:1998 Obsługuje C-Rozszeżenia specyficzne dla architektury 21K Zawiera bibliotekę funkcji ANSI, matematycznych, DSP Kompilator może być użyty do generowania plików wykonywalnych (format elf) z kodu C, asemblera i plików obiektów Debugger C i C mieszanego z Asemblerem na poziomi kodu źrodłowego Obsługuje interpreter asemblera in-line Obsługuje interfejs ze źródłem asemblera
3 Programowanie w C dla DSP Czemu pisać w C? - podtrzymywalny kod - przenośny kod - learning curve prościej się uczyć Jakie są wady pisania w C? - wydajność kodu (rozmiar, ilość cykli) - wolniejsza obsługa przerwań Optymalną metodą jest mieszanie kodu C z assemblerem
4 Kompliator C ADSP-211xx Kompliator -wywoływany przez IDDE (wpisany w ustawieniach) -wywoływany z poziomu DOS (cc21k.exe) Plik linkera (LDF Linker description file) -określa segmenty w pamięci dla kodu i danych -określa segment w pamięci na stos (do przekazywania parametrów przy wywoływaniu przerwania) -określa segment w pamięci na heap (malloc) Run Time Header (161_hdr.doj): - zapewnia obsługę przerwań - inicjalizuje środowisko C - musi być zlinkowany razem z kodem C Interfejs C/Assembler - Prolog/Epilog
5 Proces budowania (Build) Edytor tekstu Preprocesor C Plik.c Kompliator Plik.ldf Lib.dlb Preprocesor Asemblera Asember Linker Plik.doj
6 Ustawienia kompliatora Compile/General Property Page włączenie debugowania i optymalizacji Zatrzymaj po : preprocessingu, kompliowaniu Compile/Preprocessor Property Page podaje definicje procesora określa ścieżki do dołączania plików Compile/Warning Property Page włącza poziomy ostrzeżeń Compile/DSP specific Property Page Określa zarezerwowane rejestry Wybiera prezycję 32 lub 64 bit
7 Ustawienia kompliatora Odpowiada no-builtins. Zezwala na użycie tylko funkcji ANSI Odpowiada O. Pozwala kompliatorowi optymalizować kod aby zwiększyć szybkość działania programu Odpowiednik (-ipa). Pozwala kompliatorowi zoptymalizować kod całosciowo (na podstawie wszystkich plików źrodłowych), a nie tylko wewnątrz danej jednostki translacyjnej. Odpowiada save-temps. Powoduje że kompliator Nie kasuje plików tymczasowych Generuje informacje do Debuggowania (DWARF-2). Pozwala użytkownikom u Ustawiać breakpointy i Debuggować (-o)
8 Ustawienia kompliatora: preprocessor Tu dodaj makra, które chcesz zdefiniować. Oddziel je przecinkami. Odpowiednik -D Powoduje że preprocesor Ignoruje standardowe ścieżki include przy szukaniu plików. Odpowiednik no-std-inc Tu wpisz makra, które chcesz usunąć. Oddziel je przecinkami. Odpowiednik -U Tu wpisz ścieżki w których preprocessor ma szukać plików include. Oddziel Je przecinkami. Odp -I.
9 Ustawienia kompliatora: ostrzeżenia Ostrzega przy niejawnych deklaracjach funkcji np. gdy funkcja nie ma globalnego prototypu ale jest zdefiniowana przed wywołaniem. Odpowiada -flags-complier Włącza wyświetlanie Uwag kompliatora, o znaczeniu diagnostycznym (mniej ważne od ostrzeżeń) Odpowiada -Wremarks Ostrzega kiedy kompliator nie może wygenerować kodu inline dla funkcji która została zdefiniowana ze słowem Kluczowym inline. Odpowiada -no-inline Wyłącza wyświetlanie ostrzeżeń. Będzie Raportować tylko błędy. Odpowiada w.
10 Ustawienia kompliatora: DSP Ustawia double-size jako 32bit. Odpowiada -double-size-64 Ustawia double-size jako 64bit. Kompliator używa Wolniejszych funkcji aby zapewnić obsługę 64bit. Odpowiada -double-size-64 Wyłącza automatyczne Generowanie kodu SIMD. Można je wymusić za Pomocą SIMD_for.
11 Obsługiwane formaty danych:
12 LDF (Linker Description File) dla programów C Opis pamięci -określa segmenty pamięci - mapuje sekcje wejściowe (nazwy produkowane przez kompliator) odpowiednim segmentom pamięci Obsługa stosu - rozmiar i adres stosu -położenie stosu Obsługa heap -Rozmiar, położenie i nazwa - lokalizacja
13 Opisy pamięci Określa segmenty pamięci -nagłówek runtime (lokacja tablicy wektorów przerwań) - kod inicjalizujący -kod -dane -* stos -heap(możliwe wiele obszarów heap) Mapuje sekcje wejściowe segmentom pamięci Nazwa sekcji Użycie seg_rth Nagłówek runtime (161_hdr.obj) seg_init Inicjalizacja obszaru danych seg_pmco Inicjalizacja obszaru kodu seg_dmda Zmienne globalne, ciągi znakowe, stałe seg_pmda Zmienne
14 Sekcja pamięci pliku LDF: MEMORY { seg_rth { TYPE(PM RAM) START(0x ) END(0x000400ff) WIDTH(48) } seg_init { TYPE(PM RAM) START(0x ) END(0x000401ff) WIDTH(48) } b0_code { TYPE(PM RAM) START(0x ) END(0x000419ff) WIDTH(48) } b0_data { TYPE(PM RAM) START(0x00042a00) END(0x00043fff) WIDTH(32) } b1_data{ TYPE(DM RAM) START(0x ) END(0x00051fff) WIDTH(32) } seg_heap { TYPE(DM RAM) START(0x ) END(0x00052fff) WIDTH(32) } seg_stak { TYPE(DM RAM) START(0x ) END(0x00053fff) WIDTH(32) } } Processor p0 { OUTPUT( test1.dxe) LINK_AGAINST($COMMAND_LINE_LINK_AGAINST) Section { run_time_header {INPUT_SECTIONS($OBJECTS(seg_rth)$LIBRARIES(seg_rth))} > seg_rth seg_init {INPUT_SECTIONS($LIBRARIES(seg_init))} > seg_init pm_code {INPUT_SECTIONS($OBJECTS(seg_pmco)$LIBRARIES(seg_pmco))} > b0_code pm_data {INPUT_SECTIONS($OBJECTS(seg_pmda)$LIBRARIES(seg_pmda))} > b0_data dm_data {INPUT_SECTIONS($OBJECTS(seg_dmda)$LIBRARIES(data))} > b1_data } }
15 Przykładowy program C: // Simple dot product example float dot(float* x, float* y, int n); float dot(float* x, float* y, int n) { int i; float sum=0; for(i=0;i<n;i++) { sum += x[i]*y[i]; } return(sum); }
16 Kod assemblera stworzony przez kompliator:
17 Słowo kluczowe KEYWORD Każe kompliatorowi umieścić zmienną lub funkcję w sekcji Innej niż domyślna stosowana przez kompliator Przykład static section( data2 ) int x; Sekcja obiektu później zmapujemy ją do segmentu pamięci w pliku LDF
18 Proces budowania oprogramoania Etap 1, przykład: źródło C z różnymi sekcjami
19 Stos: 32 bitowa struktura rosnąca w pamięci od wyższych do niższych adresów. Zarządzana przez wskaźnik ramki I6 oraz wskaźnik stosu I7 -wskaźnik ramki wskazuje adres początku ramki -wskaźnik stosu wskazuje następną wolną lokację na stosie Ramka stosu zawiera - zmienne lokalne - zmienne tymczasowe - parametry funkcji
20 LDF i stos System uruchomieniowy C zależy od inicjalizacji wskaźnika Ramki, I6 oraz wskaźnika stosu, I7 Wartości te są inicjalizowane stałymi zdefiniowanymi w pliku opisu linkera (LDF). ldf_stack_space ldf_stack_length Zmienne użyte do inicjalizacji wskaźników ramki i stosu są Zdefiniowane i inicjalizowane w pliku assemblera seg_init.asm lib_stack_space lib_stack_lenght inits
21 LDF ustawienie stosu (tylko kompilator C) Linker przelicza stałe inicjalizujące stos LDF z deklaracji stosu stackseg { ldf_stack_space =. ; ldf_stack_length = MEMORY_SIZEOF(seg_stak); } > Ta sekcja musi być dołączona w części SECTIONS() pliku LDF Jeśli programujemy w C
22 LDF i Heap Cztery funkcję biblioteki są używane do alokowania i zwalniania pamięci z obszaru Heap. - malloc, calloc, realloc, free Seg_init.asm zawiera zmienne inicjalizowane stałymi określonymi w pliku LDF. - ldf_heap_space - ldf_heap_length - ldf_heap_end Wiele obszarów heap jest dopuszczalnych (wymaga to dodania kodu do LDF oraz seg_init.asm)
23 LDF i heap (tylko kompilator C) Sekcja wyjściowa heap wylicza wartości inicjalizujące heap z deklaracji segmentów heap heap { ldf_heap_space =.; ldf_heap_length = MEMORY_SIZEOF(seg_heap); ldf_heap_end = ldf_heap_space+ ldf_heap_length-1 } > seg_heap Sekcja ta musi być umieszczona w części Section pliku LDF jeśli programujemy w C Dla każdego obszaru heap ten kod musi być skopiowany.
24 Nagłówek Run Time (RTH) RTH w połączeniu z funkcją seg_init() ustawia środowisko C: - inicjalizuje stos - inicjalizuje heap - inicjalizuje rejestry RTH w połączeniu z funkcją C signalxx(), interruptxx() zapewnia wsparcie obsługi przerwań: -włączenie przerwań - zachowanie/odtworzenie kontekstu - serwis (?) przerwań RTH umieszczany jest w położeniu wektora przerwań i może być modyfikowany przez programistę (161_hdr.asm)
25 Stos Run Time Seg_init.asm SEG_INIT.ASM - ustawia stos Run Time (tworzy zmienne zawierające długość i położenie stosu) - ustawia heap -Używa stałych zdefiniowanych w pliku LDF (patrz poprzedni slajd). segment/pm seg_init;.global lib_stack_space;.var lib_stack_space = ldf_stack_space;.global lib_stack_length;.var lib_stack_length = ldf_stack_length;.global inits;.var inits = 0x0; SEG_INIT.ASM jest linkowany do archiwum libc.dlb
26 RTH i przerwania. Kod mieści się w tabeli wektorów przerwań (IVT) Dispatcher - interruptxx() gdzie xx to blank, cb, f, s, lub ss -włącza przerwania - przypisuje wybrane ISR każdemu przerwaniu - zapisuje i odtwarza kontekst procesora (nie dotyczy ss) Zmień RTH dla szybkiej obsługi przerwań
27 Włączanie przerwań Przerwania włącza się w trakcie działania procesora, za pomocą funkcji biblioteki jak poniżej interruptcb(sig, isr_name); interrupt(sig, isr_name); interruptf(sig, isr_name); interrupts(sig, isr_name); interruptss(sig, isr_name); Przykład: interrupts(sig_tmzi, MyTimerISR); Funkcja interruptxx() realizuje: -włączenie przerwań w rejestrze MODE1 - ustawienie odpowiedniego bitu w rejestrze IMASK - mapuje odpowiednią funkcję (isr_name) jako procedure obsługi przerwania signalxx(sig,isr_name); włącza jedną instancję przerwania.
28 Zachowanie/odtworzenie stanu procesora Przed wywołaniem ISR, dispatcher zachowuje stan procesora. Po wywołaniu ISR, dispatcher odtwarza stan procesora. Nazwa liczba cykli funkcja C co jest zachowane? Circular Buffer 332 Interruptcb() Zachowuje i odtwarza wszystko, lącznie z licznikiem pętli, zeruje Rejestr długości Regular 292 Interrupt() Tak jak powyżej, bez zerowania. Fast 66 Interruptf() Zachowuje rejestry tymczasowe. Super fast Final Interrupts() Interruptss() Używany jest drugi zestaw Rejestrów. Zagnieżczanie przerwań Wyłączone Bazuje na kodzie obsługi przerwania do zachowania/odtworzenia kontekstu. Zagnieżdzanie przerwań dozwolone.
29 Normalna praca programu Przerwania włączone? Tak Nie Skok do lokacji z tablicy IVT 1. Wyłącza przerwania 2. Wyznacza ID przerwania 3. Skacze do determinatora 1. Wyznacza ISR 2. Wyznacza determinator 3. Zamraża cache 4. Skacze do dispatchera Determinator przerwania Dispatcher przerwania ISR 1. Dispatchery: Circ Buf Regular Fast Super Fast Final 2. Zachowuje rejestry (nie final) 3. Skacze do ISR 4. Odtwarza rejestry 5. Wraca do normalnej pracy
30 Interfejs Assemblera Funkcje assemblera wywoływalne z poziomu C Komendy assemblera wywoływane z wewnątrz funkcji (assembler in-line) Łączenie zmiennych C z symbolami assemblera
31 Funkcje asseblera wywoływalne z poziomu C Jest szereg problemów związanych z pisaniem procedur Assemblera wywoływalnych z C, które należy poznać. -Użycie rejestrów Rejestry Dedicated (dedykowane) Rejestry Call preserved Rejestry Scratch Rejestry User - Przekazywanie parametrów
32 Przekazywanie parametrów Rejestr r4 r8 r12 stack(stos) r0 r0,r1 r1 Typ przekazywanego lub zwracanego parametru Przekazuje pierwszy 32-bitowy parametr Przekazuje drugi 32-bitowy parametr Przekazuje trzeci 32-bitowy parametr Przekazuje czwarty i pozostałe parametry Zwraca parametry int, long, char, float, shor, pointer Zwraca long double i struktury dwusłowowe. Umieszcza MSW w r0 i LSW w r1 Zwraca adres wyników większych niż dwa słowa. r1 zawiera adres pierwszego słowa rezultatu
33 Rejestry dedykowane Zestaw rejestrów które kompliator C rezerwuje do swojego użytku Rejestr m5, m13 m6,m14 m7,m15 b6,b7 l6,l7 l0,l1, l2, l3, l4, l5, l8, l9, l10, l11, l12, l13, l14, l15 Wartość Baza stosu Długość stosu 0 Reguły zmiany Nie zmieniać Nie zmieniać Nie zmieniać Nie zmieniać Nie zmieniać Zmieniać tymczasowo, odtwarzać po skończeniu
34 Rejestry zachowywane przy skokach Mogą być używane w funkcjach assemblera, ale ich wartości powinny zostać zachowane i odtworzone zakłada się że ich wartości są niezmienne pomiędzy wywołaniami funkcji
35 Rejestry Scratch (tymczasowe) ich zwartość NIE MUSI być zachowywana można używać swobodnie w procedurach asemblera
36 Rejestry użytkownika Rejestry te mogą zostać zarezerowane jeśli podamy kompliatorowi parametr -reserve
37 Funkcje assemblera wywoływane z poziomu C Dane są marka w pliku asm_sprt.h, które ułatwiają wywoływanie funkcji. -zachowanie/odtworzenie rejestrów (puts, reads) -Przekazanie parametrow na/ze stosu (reads) -odtworzenie ramki i wskaźnika stosu (exit) PUTS =x; (wysyła wartość rejestru x na stos) puts=r9; -> dm(i7,m7)=r9; READS(n); (czyta n-tą wartość ze stosu. Używane do przekazywania parametrów. R0=Reads(1); -> R0=dm(1,i7); EXIT; (Odtwarza ramkę i wskaźnik stosu i skacze do adresu powrotu) Exit -> i12=dm(m7,i6); jump(m14,i12)(db); nop; rframe;
38 Assembler In-line Bezpośrednie wywołanie komendy assemblera uzyskujemy przy pomocy komendy asm() Example: asm( bit set mode2 0x20; ); asm( ustat1 = 0x1234; ) asm( dm(ioflag)=ustat1; ); Uwaga: Kod powstały przy użyciu tej metody może być mniej wydajny - kompilator lubi zamienić kolejność instrukcji
39 Nazewnictwo przy mieszaniu C i ASM Program w C int c_var; /*zmienna globalna*/ void c_function(); Część w asemblerze.extern _c_var;.extern _c_func; Aby nazwać symbol assembera, odpowiadający symbolowi w c, dodaj podkreślenie przed jego nazwą. Zdefiniuj jako zmienną globalną w C i jako EXTERN w assemblerze extern int asm_var.global _asm_var; extern void asm_func();.global _asm_func; _asm_func: Aby użyć zmiennej lub funkcji assemblera w programie w C, zdefiniuij symbol za pomocą dyrektywy.global w assemblerze i jako EXTERN w programie C
40 Rozszerzenia ANSI C Typy danych PM, DM do obsługi podwójnej pamięci. int pm x /* declares data in program memory */ int data_buf /* dm is default type */ INLINE włącza kod funkcji do kodu funkcji wywołującej Eliminuje starty na wywołanie funkcji inline int add_one (int *a) { (*a)++; } Słowo kluczowe VOLATILE zapobiega zmianie położenia lub łączenia twoich instrukcji assemblera lub deklaracji zmiennych. volatile int x;
41 Przykład- Dodajmy 5 liczb za pomocą assemblera Następujący przykład to program w C który wykonuje wywołanie do funkcji z pamięci assemblera. Funkcja dodaje pięć liczb które są przekazywane jako parametry Kod w C #include <stdio.h> extern int add5(int,int,int,int,int); /* Function is located in assembly module */ volatile int sum; /* Variable only used in assembly sub-routine*/ /* volatile keeps sum from being optimized out */ main() { inta=1;intb=2;intc=3;intd=4;inte=5; /* Initialize parameters */ int result=0; result = add5(a,b,c,d,e); /* Call to the ADD5 function */ exit(0); }
42 Procedura Assemblera /* Assembly Routines with Parameters Example - _add5 */ /* int add5 (int a, int b, int c, int d, int e); */ /* This is an assembly language routine that will add 5 numbers */ #include <asm_sprt.h> /* Header file that defines the stack manipulation macros */.segment/pm seg_pmco;.global _add5;.extern _sum; _add5: r4=r4+r8; /* Add the first and second parameter */ r4=r4+r12; /* Add the third parameter */ r8=reads(1); /* Put the fourth parameter in R8 */ r4=r4+r8; /* Add the fourth parameter */ r8=reads(2); /* Put the fifth parameter in R8 */ r0=r4+r8; /* R0 is always the return value */ dm(_sum) = R0; /* Place the sum in the global variable (C is unaware of this assignment)*/ leaf_exit; /* Restores frame and stack pointers */.endseg;
43 Optymalizacja kodu w C Optymalizacja może zmniejszyć rozmiar kodu lub przyspieszyć wykonywanie Może być włączane i wyłączane parametrem kompliatora bez parametru optymalizacja wyłączona -O optymalizacja wydajności -Os optymalizacja rozmiaru kodu -ipa optymalizacja międzyproceduralna -Ov num enable speed vs size optimization (sliding scale) (Automatically inlines small functions) Może być dalej kontrolowane z poziomu kodu C #pragma optimize_off Wyłącza optymalizcję #pragma optimize_for_space zmniejsza rozmiar kodu #pragma optimize_for_speed zwiększa wydajność #pragma optimize_as_cmd_line przywraca wartości ustalone parametrami Inne usprawnienia PGO (Profile guided Optimization) używane z IPA Wykorzystaj gotowe funkcje assemblera z biblioteki Pisz krytyczne sekcje jako funkcje assemblera wywoływane z C
44 Obsługa SIMD w C Optymalizacja jednego / wielu kanałów Ograniczone dane Tylko pojedyncze słowa (bez 64-bit doubli czy STRUCT ów Granice podwójnych słów Ciągłe Bez wywołań funkcjii wewnątrz pętli SIMD Zależności między iteracjami mogą zawieść a[j] = a[j-1] + 2; //nieprawidłowe dla SIMD
45 Obsługa SIMD w C Kompilator będzie się starał wykorzystać SIMD wszędzie, gdzie będzie to możliwe. #pragma SIMD_for może zostać użyta aby nakierować komplilator gdy pętla może być optymalizowana dla SIMD, gdy inne informacje nie są dostępne dla komplilaotra -programista jest wtedy odpowiedzialny za prawidłowe ułożenie danych, współzależności itp. -w ogólności, zawsze powinno się używać parametru ipa aby minimalizować rozmiar kodu. na przykład #pragma SIMD_for for(i=0;i<n;i++) { sum += x[i]*y[i]; }
46 optymalizacja C (bez ipa)
47 Optymalizacja C (#pragma SIMD_for, bez ipa)
48 Optymalizacja C (z ipa)
49 Optymalizacja C (z ipa)
50 Ćwiczenia
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
PMiK Programowanie Mikrokontrolera 8051
PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler
Programowanie hybrydowe C (C++) - assembler MS Visual Studio Inline Assembler Wprowadzenie Możliwość wprowadzania kodu asemblerowego bezpośrednio w kodzie źródłowym w języku C lub C++ Nie wymagany MASM
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
Wykład. Materiały bazują częściowo na slajdach Marata Dukhana
Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Wstęp. do języka C na procesor 8051. (kompilator RC51)
Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje
Inżynieria Wytwarzania Systemów Wbudowanych
GUT Intel 2015/16 1/30 Inżynieria Wytwarzania Systemów Wbudowanych Wykład 3 Iwona Kochańska Katedra Systemów Elektroniki Morskiej WETI PG October 18, 2018 Dobre praktyki GUT Intel 2015/16 2/30 Przenośność
Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil
Środowisko Krzysztof Świentek Systemy wbudowane Spis treści 1 2 Źródła 1 http://infocenter.arm.com 2 http://www.keil.com/arm/mdk.asp 3 http://pl.wikipedia.org Spis treści 1 2 Co to jest toolchain? Zbiór
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów
Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików
Zaawansowane funkcje Linkera. Sekcja 13
Zaawansowane funkcje Linkera Sekcja 13 Zaawansowane funkcje linkera Linker "rozwiazuje" adresowanie absolutne i tworzy plik wykonywalny (.DXE) Advanced Linker Support dzielenie pamieci wszystkie 21161
Wstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24
Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,
, Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer
Język C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,
Korutyny Wykład13,str1 tak działa podprogram: PROGRAM GŁÓWNY wywołanie PODPROGRAM tak działają korutyny: KORUTYNA A resume B resume B KORUTYNA B resume A Korutyny Wykład13,str2 Korutyny mają zwykle więcej
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Zmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Programowanie niskopoziomowe
Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot
Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów mgr inż. Arkadiusz Chrobot 10 listopada 2010 1 Preprocesor Preprocesor jest programem uruchamianym przed właściwym procesem kompilacji
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Ćwiczenie nr 6. Programowanie mieszane
Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 9 Preprocesor i modularna struktura programów Krzysztof Banaś Podstawy programowania 1 Programy Większość programów w C stanowią rozbudowane kody, definiujące wiele funkcji
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4
Przedmiot : Programowanie w języku wewnętrznym Ćwiczenie nr 4 str. 1. 1. Użycie Asemblera. Polecenie JMP. Polecenie nakazuje procesorowi wykonywanie kodu programu od nowego innego miejsca. Miejsce to jest
PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012
PROGRAMOWANIE NISKOPOZIOMOWE PN.04 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 3 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.04 Rok akad.
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET
Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET Technika mikroprocesorowa Instrukcja 3 Stos i podprogramy Autor: Paweł Russek Tłumaczenie: Marcin Pietroń http://www.fpga.agh.edu.pl/tm ver.
Programowanie hybrydowe łączenie C/C++ z asemblerem
Programowanie hybrydowe łączenie C/C++ z asemblerem Konwencje Wywoływanie procedur asemblerowych w kodzie języka wysokiego poziomu wymaga: Ustalenia konwencji nazewniczej używanej w języku programowania
Przeciążenie (przeładowanie nazw) funkcji
Przeciążenie (przeładowanie nazw) funkcji dla większości języków (w tym C) zasada w programie może być tylko jedna funkcja o danej nazwie kompilator C++ - dopuszcza więcej niż jedną funkcję o tej samej
Wykład 4. Środowisko programistyczne
Wykład 4 Dostępne kompilatory KEIL komercyjny GNU licencja GPL ARM komercyjny IAR komercyjny 2 Porównanie kompilatorów 3 Porównanie kompilatorów 4 Keil uvision Graficzny edytor Kompilator i linker Symulator
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla
Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
Tablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28
Programowanie w C++ Wykład 1 Katarzyna Grzelak 26 luty 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28 Dlaczego programowanie? K.Grzelak (Wykład 1) Programowanie w C++ 2 / 28 Umiejętność, która otwiera
Tablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Optymalizacja kodu. Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych.
Optymalizacja kodu Ze wszystkich metod optymalizacji kodu programowego zwrócimy uwagę na: Usunięcie (po możliwości) skoków danych Rozwijanie pętli Opcje kompilatora 1 Usunięcie skoków danych: for(i=1;
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Programowanie strukturalne język C - wprowadzenie
Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
Wprowadzenie do programowania w języku C
Wprowadzenie do programowania w języku C Część trzecia Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch
INFORMATOR TECHNICZNY WONDERWARE Informator Techniczny nr 60 04-12-2002 Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch Wstęp PoniŜsza dokumentacja oparta na przykładach stworzonych
Wskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Assembler w C++ Syntaksa AT&T oraz Intela
Ponownie dodaję artykuł zahaczający o temat assemblera. Na własnej skórze doświadczyłem dzisiaj problemów ze wstawką assemblerową w kodzie C++, dlatego postanowiłem stworzyć artykuł, w którym zbiorę w
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Typy danych. Przemysław Gawroński D-10, p lutego Wykład 1. (Wykład 1) Typy danych 25 lutego / 11
Typy danych Przemysław Gawroński D-10, p. 234 Wykład 1 25 lutego 2019 (Wykład 1) Typy danych 25 lutego 2019 1 / 11 Outline 1 Literatura 2 Programowanie proceduralne 3 Podstawowe typy danych (Wykład 1)
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Laboratorium nr 10. Temat: Funkcje cz.2.
Zakres laboratorium: Laboratorium nr 10 Temat: Funkcje cz.2. przeciążanie nazw funkcji argumenty domyślne funkcji przekazywanie danych do funkcji przez wartość, wskaźnik i referencję przekazywanie tablic
Wstęp do informatyki- wykład 11 Funkcje
1 Wstęp do informatyki- wykład 11 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Wstęp do informatyki- wykład 9 Funkcje
1 Wstęp do informatyki- wykład 9 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum
Podział programu na moduły
Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Funkcje w języku C Zasięg zmiennych Przekazywanie
Programowanie w elektronice: Podstawy C
Programowanie w elektronice: Podstawy C Projekt Matematyka dla Ciekawych Świata, Robert Ryszard Paciorek 2019-05-05 C / C++ są najpopularniejszymi językami kompilowanymi do kodu maszynowego
Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38
Programowanie w C++ Wykład 1 Katarzyna Grzelak 25 luty 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38 Dlaczego programowanie? K.Grzelak (Wykład 1) Programowanie w C++ 2 / 38 Umiejętność, która otwiera
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; 2. Utworzyć dodatkową funkcję, która przelicza F na K, na bazie poprzedniej F to C (z poprzednich zajęć), wg
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Wprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Definicje klas i obiektów. Tomasz Borzyszkowski
Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne
Wprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Co nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI
Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę