Programowanie Niskopoziomowe
|
|
- Klaudia Kuczyńska
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie
2 Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC, PROTO Programy wielomodułowe Kod pośredni Javy
3 Wstęp Tematyka związana z programowaniem niskopoziomowym z punktu widzenia HLL ramki stosu zakres i czas życia zmiennych parametry stosu przekazywanie parametrów przez wartość i przez referencję tworzenie i inicjowanie zmiennych lokalnych na stosie rekurencja pisanie programów wielomodułowych modele pamięci dyrektywy INVOKE, PROC i PROTO operatory USES i ADDR
4 Terminologia Różnice terminologiczne podprogram funkcja (C, C++) metoda (Java) procedura (MASM, Pascal) wartości przekazywane do podprogramu argumenty wartości otrzymane przez podprogram parametry
5 Ramki stosu Ramka stosu (rekord aktywacyjny) jest obszarem pamięci stosu służącym do: przekazania argumentów, zapamiętania adresu powrotu z podprogramu przechowywania zmiennych lokalnych zapamiętywania zawartości rejestrów
6 Sekwencja tworzenia ramki stosu Odłożenie na stosie argumentów przekazywanych do podprogramu Wywołanie procedury odłożenie adresu powrotu na stosie Początek wykonywania procedury odłożenie na stosie EBP Ustawienie EBP = ESP (od tego momentu EBP pełni rolę adresu bazowego dla wszystkich parametrów podprogramu) Jeśli podprogram zawiera zmienne lokalne, zawartość ESP jest zmniejszana tak, by zarezerwować na stosie miejsce na te zmienne) Jeśli trzeba zapamiętać zawartość pewnych rejestrów, to należy je odłożyć na stos
7 Parametry na stosie Dwa typy argumentów: argumenty przekazywane przez wartość (zmienne i stałe) argumenty przekazywane przez referencję (adresy zmiennych)
8 Przekazywanie parametrów przez wartość Kopia wartości jest odkładana na stosie Przykład: w języku C++ int sum = AddTwo(val1, val2); w języku asemblerowym (uwaga odwrotna kolejność) push val2 push val1 call AddTwo stos przed wywołaniem AddTwo(5,6) val2 val1 6 5 ESP
9 Przekazywanie parametrów przez referencję Na stos odkładany jest adres (offset) zmiennej Przykład: w języku C++ Swap(&val1, &val2); w języku asemblerowym (uwaga odwrotna kolejność) push OFFSET val2 push OFFSET val1 call SWAP stos przed wywołaniem AddTwo(5,6) val2 val1 offset (val1) offset (val2) ESP
10 Przekazywanie tablicy jako argumentu procedury W językach wysokiego poziomu zawsze przez referencję Przekazywanie przez wartość nieuzasadnione: wymaga odłożenia na stos każdej komórki tablicy z osobna czasochłonne pamięciożerne Przykład (wywołanie podprogramu o nazwie ArrayFill):.data array DWORD 50 DUP(?).code push OFFSET array call ArrayFill
11 Dostęp do parametrów na stosie Języki wysokiego poziomu stosują różne sposoby inicjacji i dostępu do parametrów podczas wywoływania podprogramu W językach C i C++ wygląda to następująco: prolog zapisanie zawartości EBP i ustawienie nowej wartości EBP wskazującej wierzchołek stosu + ew. odłożenie niektórych rejestrów na stos epilog na zakończenie podprogramu odtworzenie ze stosu zawartości rejestru EBP + instrukcja powrotu RET
12 Przykład Podprogram w C int AddTwo (int x, int y) { } return x + y; Prolog podprogramu w j. asemblerowym AddTwo PROC push EBP mov EBP, ESP Zawartość stosu po wywołaniu AddTwo(5,6) 6 5 adres powrotu EBP [EBP + 12] [EBP + 8] [EBP + 4] EBP, ESP
13 Adresowanie tryb bazowy z przesunięciem EBP jest rejestrem bazowym Przesunięcie w postaci stałej 32 bitowe wyniki zwracane na ogół w rejestrze EAX Przykład (procedura AddTwo): AddTwo PROC push ebp mov ebp, esp ; adres bazowy ramki stosu mov eax, [ebp+12] ; drugi parametr add eax, [ebp+8] ; pierwszy parametr pop ebp ret AddTwo ENDP
14 Adresy symboliczne parametrów Położenie parametrów procedury względem początku ramki jest stałe Adres parametru możemy zastąpić stałą Przykład: y_param EQU [ebp + 12] x_param EQU [ebp + 8] AddTwo PROC push ebp mov ebp,esp mov eax,y_param add eax,x_param pop ebp ret AddTwo ENDP
15 Błędy przy przekazywaniu parametrów przez stos Wykonanie w pętli kodu: push 6 push 5 call AddTwo może spowodować przepełnienie stosu Przy wywołaniu poniższego programu powstaje błąd (niewłaściwy adres powrotu): main PROC call Example1 exit main ENDP Example1 PROC push 6 push 5 call AddTwo ret Example1 ENDP ; niewłaściwa zawartość stosu!
16 Czyszczenie stosu Czyszczenie stosu przywrócenie stosu do stanu sprzed wywołania procedury Dwa podejścia: konwencja wywoływania podprogramów języka C konwencja STDCALL
17 Konwencja wywoływania w C Przykład: Example1 PROC push 6 push 5 call AddTwo add esp,8 ; usuwa arg. ze stosu ret Example1 ENDP Jedna z najprostszych metod polegająca na dodaniu do zawartości rejestru ESP sumy rozmiarów wszystkich parametrów ESP wskazuje wtedy miejsce na stosie, w którym przechowywany jest adres powrotu z podprogramu
18 Konwencja STDCALL Wykonanie instrukcji RET z parametrem liczbowym równym sumie bajtów zajmowanych na stosie przez parametry procedury, wartość ta dodawana jest do rejestru EBP Przykład: AddTwo PROC push ebp mov ebp,esp ; adres bazowy ramki stosu mov eax,[ebp + 12] ; drugi parametr add eax,[ebp + 8] ; pierwszy parametr pop ebp ret 8 ; czyszczenie stosu AddTwo ENDP
19 Porównanie konwencji W obydwu przypadkach parametry przekazywane w odwrotnym porządku W STDCALL stos zawsze czyszczony automatycznie, w C użytkownik musi pamiętać o zdjęciu odpowiedniej liczby bajtów ze stosu W C możliwość stosowania zmiennej liczby parametrów podprogramu, w STDCALL brak takiej możliwości
20 Przekazywanie przez stos argumentów 8- i 16-bitowych W trybie chronionym obszar stosu podlega tym samym ograniczeniom co pozostałe obszary pamięci dostęp do podwójnych słów i zasada wyrównywania do adresów o wielokrotności 4 Zaleca się rozszerzanie wartości 8 i 16 bitowych do 32 bitów Podczas odkładania na stosie stałej instrukcją PUSH nastąpi automatyczne rozszerzenie do 32 bitów Odkładanie na stosie zmiennych o rozmiarze bajta lub słowa spowoduje błąd, wymaga więc od użytkownika rozszerzenia wartości do 32 bitów instrukcją MOVZX (lub MOVSX dla liczby ze znakiem)
21 Przekazywanie przez stos argumentów dłuższych niż 32 bity ABCDEF adres powrotu EBP Rozmiar argumentu powinien być wielokrotnością podwójnego słowa Istotny jest porządek przekazywania części tego argumentu (najpierw starsza, potem młodsza część) Przykład:.data [EBP+12] [EBP+8] [EBP+4] EBP, ESP longval DQ ABCDEFh.code push DWORD PTR longval + 4 ; część starsza push DWORD PTR longval ; część młodsza call WriteHex64
22 Zapamiętywanie i odtwarzanie rejestrów Zawartość rejestrów używanych wewnątrz procedury powinna być zapamiętana tuż po zapamiętaniu zawartości ESP w EBP i jeszcze przed zarezerwowaniem miejsca dla zmiennych lokalnych Inne podejście może spowodować zmianę offsetu dla istniejących elementów stosu (adresu powrotu i argumentów podprogramu)
23 Wpływ operatora USES na zawartość stosu Operator USES powoduje odłożenie na stos zawartości rejestrów wymienionym po tym operatorze Asembler podczas kompilacji dodaje na początku procedury odpowiednie instrukcje PUSH, a na końcu procedury odpowiadające im instrukcje POP W takim przypadku stosowanie instrukcji z adresowaniem komórek stosu za pośrednictwem offsetu w postaci stałej spowoduje błędny dostęp do pamięci (stała nie uwzględnia instrukcji PUSH wywołanych operatorem USES) Instrukcje PUSH dodane przez USES wykonywane są przed przypisaniem EBP=ESP, co powoduje kolejny błąd przy dostępie do adresu powrotu i argumentów procedury Błędów tych można uniknąć definiując odpowiednio parametry stosu w dyrektywie PROC
24
25 DZIĘKUJĘ ZA UWAGĘ
Programowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie
Bardziej szczegółowo4 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.
Bardziej szczegółowoĆ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
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoInstrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Bardziej szczegółowoPraktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.
Krótki artykuł opisujący trzy podstawowe konwencje wywoływania funkcji C++ (a jest ich więcej). Konwencje wywoływania funkcji nie są tematem, na który można się szeroko rozpisać, jednak należy znać i odróżniać
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoPROGRAMOWANIE 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.
Bardziej szczegółowoĆwiczenie 3. Konwersja liczb binarnych
1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się
Bardziej szczegółowoZadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów
Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania
Bardziej szczegółowoPrzedmiot : 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
Bardziej szczegółowoArchitektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
Bardziej szczegółowoArchitektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Bardziej szczegółowoPROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012
PROGRAMOWANIE NISKOPOZIOMOWE PN.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.06 Rok akad.
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowoProgramowanie w asemblerze Środowiska 64-bitowe
Programowanie w asemblerze Środowiska 64-bitowe 24 listopada 2015 Nieco historii najnowszej Intel wraz z HP rozpoczynaja pracę nad procesorem 64-bitowym z wykorzystaniem technologii VLIW. Powstaje procesor
Bardziej szczegółowoLab 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
Bardziej szczegółowoMOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
Bardziej szczegółowoMetody Realizacji Języków Programowania
Metody Realizacji Języków Programowania Bardzo krótki kurs asemblera x86 Marcin Benke MIM UW 10 stycznia 2011 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 10 stycznia 2011 1 / 22 Uwagi
Bardziej szczegółowoStruktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
Bardziej szczegółowoPROGRAMOWANIE NISKOPOZIOMOWE
PROGRAMOWANIE NISKOPOZIOMOWE PN.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.06 Rok akad. 2011/2012 1 / 22 1 Asembler
Bardziej szczegółowoJęzyk programowania: Lista instrukcji (IL Instruction List)
Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne
Bardziej szczegółowoPROGRAMY REZYDENTNE Terminate and State Resident, TSR
PROGRAMY REZYDENTNE Terminate and State Resident, TSR O co tu chodzi Podstawowe reguły Jak może program zostać rezydentnym Przechwytywanie przerwań Jak się samoznaleźć w pamięci Aktywacja TSR-u. Problemy
Bardziej szczegółowoPROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012
PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 4 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 c Dr
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoPodstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.
Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane
Bardziej szczegółowoProgramowanie niskopoziomowe
Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoZuzanna Hartleb i Artur Angiel
ARCHITEKTURA KOMPUTERÓW - LABORATORIUM Program hybrydowy Dokumentacja ćw. 1-4 Zuzanna Hartleb i Artur Angiel 2010-06-16 Działanie Program pobiera od użytkownika liczbę zmiennoprzecinkową, sprawdza poprawnośd
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoParadygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Bardziej szczegółowoĆwiczenie nr 4. Zasady kodowania podprogramów
Ćwiczenie nr 4 Zasady kodowania podprogramów 4.1 Wstęp W praktyce programowania spotykamy się często z sytuacjami, gdy identyczne czynności wykonywane są w wielu miejscach programu. W takich przypadkach
Bardziej szczegółowoProgramowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 2: Reprezentacja danych Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Kilka ciekawostek Zapisy binarny, oktalny, decymalny
Bardziej szczegółowoStruktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
Bardziej szczegółowoAssembler 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
Bardziej szczegółowoObliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
Bardziej szczegółowoPRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S
PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH ZATWIERDZAM Dziekan Wydziału Nauk Społecznych i Technik Komputerowych S Y L A B U S 1 Tytuł (stopień) naukowy oraz imię i nazwisko
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoProgramowanie mikrokontrolera 8051
Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady
Bardziej szczegółowoend start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.
Struktura programu typu program.com ; program według modelu tiny name "mycode" ; nazwa pliku wyjściowego (maksymalnie 8 znaków) org 100h ; początek programu od adresu IP = 100h ; kod programu ret ; koniec
Bardziej szczegółowoProgramowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 10: Arytmetyka całkowitoliczbowa Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wprowadzenie Instrukcje przesunięcia bitowego
Bardziej szczegółowoWskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Bardziej szczegółowoProgramowanie na poziomie sprzętu. Programowanie w Windows API
Programowanie w Windows API Windows API Windows Application Programming Interface (API) to zestaw funkcji systemu operacyjnego Windows, które umożliwiają aplikacjom korzystanie z wszystkich usług systemu.
Bardziej szczegółowoPROGRAMOWANIE NISKOPOZIOMOWE
PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 Wprowadzenie
Bardziej szczegółowoPrzydział pamięci. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki
Przydział pamięci Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Terminologia Program s(input,output) {SORT} program główny można traktować także jako procedurę var a: array[0..10] of integer;
Bardziej szczegółowo2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH: Instrukcja do laboratorium 4, (2x2h) Opracowanie i prowadzenie: dr inż. Ignacy Pardyka, Uniwersytet Jana Kochanowskiego w Kielcach Temat: Architektura MIPS: wywołanie
Bardziej szczegółowoTablice, funkcje, wskaźniki - wprowadzenie
Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoWieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa
Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich
Bardziej szczegółowoProgramowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 1: Wstęp Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Informacje o przedmiocie Języki asemblerowe i ich zastosowania
Bardziej szczegółowoSpis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Bardziej szczegółowoPodstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 12 Struktury, unie, pola bitowe 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Struktury 2 Struktury Struktury to złożone typy danych
Bardziej szczegółowoJęzyki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.
Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -
Bardziej szczegółowoAdam Kotynia, Łukasz Kowalczyk
Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)
Bardziej szczegółowoPODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA
PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA PODSTAWOWE ELEMENTY ASEMBLERA Składnia języka Postać wiersza programu Dyrektywy i pseudoinstrukcje Deklaracja zmiennych Zmienne łańcuchowe
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoLista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe
Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe Ryszard J. Barczyński, 2009 2013 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego
Bardziej szczegółowo002 Opcode Strony projektu:
ReverseCraft assem bler by gynvael.coldwind//vx Opcode Strony projektu: http://re.coldwind.pl/ http://www.uw-team.org/ Zasoby! czyli co możemy użyć... Instrukcje procesora Pamięć Wirtualna Rejestry CPU
Bardziej szczegółowoJak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.
Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Dlatego trzeba je zapisywać do pliku, a potem umieć je z tego
Bardziej szczegółowoWprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86
Wprowadzenie do Architektury komputerów Asembler procesorów rodziny x86 Budowa procesora rodziny x86 Rejestry procesora 8086 ogólnego przeznaczenia Dla procesorów 32-bitowych: EAX, EBX, ECX, EDX Dla procesorów
Bardziej szczegółowoPodstawy programowania 2. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 3
Programowanie komputerowe Zajęcia 3 Instrukcje przypisania Poza zwykłą instrukcją przypisania, powodującą ustawienie wartości zmiennej na podane wyrażenie, istnieje wiele innych, np. += dodaj, a+=b jest
Bardziej szczegółowoTechnika 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,
Bardziej szczegółowotyp_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }
Języki i paradygmaty programowania studia stacjonarne 208/9 Lab 3. Funkcje, argumenty funkcji, wskaźniki, adresy.. Podstawowe pojęcia: Funkcja w C (czasami nazywana podprogramem, rzadziej procedurą) to
Bardziej szczegółowoArchitektura komputerów
Architektura komputerów Tydzień 4 Tryby adresowania i formaty Tryby adresowania Natychmiastowy Bezpośredni Pośredni Rejestrowy Rejestrowy pośredni Z przesunięciem stosowy Argument natychmiastowy Op Rozkaz
Bardziej szczegółowoParę słów o przepełnieniu bufora.
Parę słów o przepełnieniu bufora. Łukasz Pejas Styczeń 2006 1 Bufor na stosie. Stos służy między innymi do przekazywania parametrów do funkcji i do tworzenia zmiennych lokalnych funkcji. Jest czymś w rodzaju
Bardziej szczegółowoPodstawy Informatyki Języki programowania c.d.
Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Przykład programu samomodyfikującego się Przykład - sumowanie elementów tablicy 2 Makroasembler - założenia Przykład
Bardziej szczegółowoMetody Realizacji Języków Programowania
Metody Realizacji Języków Programowania Realizacja funkcji, procedur i metod Marcin Benke MIM UW 6 grudnia 2010 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 6 grudnia 2010 1 / 1 Realizacja
Bardziej szczegółowoPodstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 7 Funkcje Przekazywanie argumentów do funkcji 1 dr Artur Bartoszewski - programowania, sem 1 - WYKŁAD programowania w C++ Funkcje 2 dr Artur Bartoszewski - programowania sem. 1 -
Bardziej szczegółowoZarządzanie pamięcią w systemie operacyjnym
Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej
Bardziej szczegółowoĆwiczenie nr 3. Wyświetlanie i wczytywanie danych
Ćwiczenie nr 3 Wyświetlanie i wczytywanie danych 3.1 Wstęp Współczesne komputery przetwarzają dane zakodowane za pomocą ciągów zerojedynkowych. W szczególności przetwarzane liczby kodowane są w systemie
Bardziej szczegółowoKompilator 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
Bardziej szczegółowoKonwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,
Bardziej szczegółowoProcesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]
Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową
Bardziej szczegółowoWstę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
Bardziej szczegółowoTechnika mikroprocesorowa I Wykład 2
Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,
Bardziej szczegółowoWskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Bardziej szczegółowoKsięgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86
Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86 Spis treści Wprowadzenie... 11 1. Architektura procesorów rodziny x86... 17 1.1. Model procesorów
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
Bardziej szczegółowoWyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal
Bardziej szczegółowoArchitektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna
Architektura komputerów. Literatura: 1. Piotr Metzger, Anatomia PC, wyd. IX, Helion 2004 2. Scott Mueller, Rozbudowa i naprawa PC, wyd. XVIII, Helion 2009 3. Tomasz Kowalski, Urządzenia techniki komputerowej,
Bardziej szczegółowoJĘ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
Bardziej szczegółowoTablice, 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
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Bardziej szczegółowoWstęp do programowania. Wykład 1
Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.
Bardziej szczegółowoFunkcje. 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
Bardziej szczegółowoWskaź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ą
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót
Bardziej szczegółowoPMiK 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
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Bardziej szczegółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoSTRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer)
STOS I PROCEDURY STRUKTURA I ORGANIZACJA STOSU (FILO- First In Last Out) Rejestry stosu: SS i SP (Stack Segment i Stack Pointer) a) Stan początkowy b) Po załadowania pierwszego elementu (tu - zawartość
Bardziej szczegółowoReferencje do zmiennych i obiektów
Referencje do zmiennych i obiektów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoJę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
Bardziej szczegółowoPodstawy programowania w języku C
Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu
Bardziej szczegółowoArchitektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury
Marcin Stępniak Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury 1. Informacje 1.1. Stos Stos jest strukturą danych, w której dane dokładane są na wierzch stosu
Bardziej szczegółowoWskaź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
Bardziej szczegółowokiedy 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
Bardziej szczegółowo