Programowanie w asemblerze MIPSa
|
|
- Wojciech Tomaszewski
- 8 lat temu
- Przeglądów:
Transkrypt
1 p. 1/28 Programowanie w asemblerze MIPSa (ciąg dalszy)
2 p. 2/28 Przypomnienie Trzy poziomy języka: Język maszynowy - kody operacji, wszystkie adresy, numery rejestrów i stałe zakodowane za pomoca zer i jedynek; Prawdziwy asembler - kody operacji zapisywane symbolicznie (np. add, lw,...), symboliczne nazwy rejestrów, adresy zastapione etykietami, stałe podawane dziesiatkowo; Pseudoasembler - mamy dodatkowe instrukcje nie majace bezpośrednich odpowiedników w języku maszynowym, tłumaczone na (krótka, czasem jednoelementowa!) sekwencje rozkazów maszynowych
3 p. 3/28 Typy rozkazów typu R (rejestrowe) add $t0, $s1, $s2, mult $s1, $s2, slt $t3, $s2, $s1,... 6 bitów kodu operacji trzy pola po 5 bitów numery rejestrów 5 bitów shamt 6 bitów funkyjnych - dodatkowe szczegóły operacji typu I (z argumentem stałym) addi $t0, $s1, -7, bne $s1, $s2, etyk, lw $s1, 4($s6),... 6 bitów kodu operacji dwa pola po 5 bitów na numery rejestrów 16 bitów na stała typu J (skoki) j etyk 6 bitów na kod operacji + 26 bitów na stała
4 p. 4/28 Przykładowa organizacja pamięci $sp 7fff fffc hex Stack $gp pc hex hex hex 0 Dynamic data Static data Text Reserved
5 p. 5/28 Przykład programu Przykład kompletnego programu (z duża liczba pseudorozkazów). Program został zaczerpnięty z Krotkiego wprowadzenia do SPIM-a autorstwa Salah A. Almajdouba. Jego zadaniem jest dodanie elementów tablicy.
6 p. 6/28.text.globl main main: lw $s0, Size # czyta rozmiar tablicy li $s1, 0 # indeks i li $s2, 0 # s2 bedzie przechowywac sume li $t2, 4 # t2 zawiera stala 4 loop: mul $t1, $s1, $t2 # t1 dostaje i * 4 lw $s3, Nstart($t1) # s3 = N[i] add $s2, $s2, $s3 # sum = sum + N[i] addi $s1, $s1, 1 # i = i + 1 beq $s1, $s0, STOR # skaczemy do STOR na koniec j loop STOR: sw $s2, Result # wynik zachowujemy w Result.data Nstart:.word 8, 25, -5, 55, 33, 12, -78 Size:.word 7 Result:.word 0
7 p. 7/28 Tłumaczenie pseudoinstrukcji rozkaz tłumaczenie komentarz lw $s0, Size lui $1, 4097 load upper immediate lw $16, 28($1) li $s1, 4 ori $17, $0, 4 logiczna alternatywa ze stała mul $t1, $s1, $t2 mult $s1, $t2 mflo $t1 lw $s3, Nstart($t1) lui $1, 4097 addu $1, $1, $9 lw $19, 0($1) SPIM traktuje mul jak rozkaz
8 p. 8/28 Wspomaganie definiowania procedur i funkcji int funkcja (int n){ main(){ int i,j; int i,j; (...) i=funkcja(i); return j;... } j=funkcja(i+6); } po skoku do funkcji i jej wykonaniu musimy wrócić w odpowiednie miejsce do funkcji należy jakoś przekazać parametry i jakoś odebrać wyniki funkcja operuje na pewnych rejestrach, być może tych samych co program główny
9 p. 9/28 Wywołanie i powrót z funkcji Rejestr $ra służy do przechowywania adresu powrotu z funkcji. Rozkaz jal fun (jump and link) skacze do etykiety fun i zapamiętuje aktualna wartość licznika rozkazów pc. Powrót z funkcji zapewnia rozkaz jr $ra (jump register) - skocz pod adres zapisany w rejestrze (w ogólnym przypadku nie musi to być rejestr $ra.
10 p. 10/28 Argumenty i wyniki funkcji Zalecana jest następujaca konwencja: Parametry sa przekazywane w rejestrach $a0-$a3. Wyniki zwracane sa w rejestrach $v0, $v1. Jeśli potrzebujemy większej licbzy parametrów lub wyników możemy je przekazać za pomoca stosu
11 p. 11/28 Zmienne lokalne W funkcji chcemy użyć $s1, $s2, $s3. Ich wartości moga być jeszcze potrzebne w miejscu wywołania. Zapamiętujemy ich aktualna wartość na stosie, wykonujemy obliczenia i na koniec odtworzy wartości rejestrów. Fun: addi $sp, $sp, -12 sw $s1, 8($sp) sw $s2, 4($sp) sw $s3, 0($sp) (...) lw $s3, 0($sp) lw $s2, 4($sp) lw $s1, 8($sp) addi $sp, $sp, 12 jr $ra
12 Argumenty, wyniki i wywołanie (...) addi $a0, $zero, 13 add $a1, $zero, $s2 jal Fun addi $s1, $zero, $v0 (...) Fun: addi $sp, $sp, -12 sw $s1, 8($sp) sw $s2, 4($sp) sw $s3, 0($sp) (...) lw $s3, 0($sp) lw $s2, 4($sp) lw $s1, 8($sp) addi $sp, $sp, 12 jr $ra p. 12/28
13 p. 13/28 Zagnieżdżone wywołania Problem: jeśli funkcja wywołuje koleja funkcję to tracimy adres powrotu Jeśli zatem zezwalamy na zagnieżdżone wywoływanie funkcji, to musimy odkładać adres powrotu ($ra) również na stosie. Na następnym slajdzie pokażemy przykład programu z funkcja wyliczajac a rekurencyjnie sumę liczb od 1 do n (n jest parametrem funkcji).
14 sumton: addi $sp,$sp,-8 # miejsce na dwa elementy na stosie sw $ra,4($sp) # odkladamy adres powrotu sw $a0,0($sp) # odkladamy argument bne $0,$a0,rec # skocz jesli arg rozny od 0 addi $v0,$zero,0 # ustawiamy wynik na 0 lw $ra,4($sp) # odtworzenie adresu powrotu # (w tym miejscu niekonieczne, ale # tak jest bardziej elegancko...) addi $sp,$sp,8 # zwalniamy dwa miejsca na stosie jr $ra # powrot z funkcji rec: addi $a0,$a0,-1 # n := n-1 jal sumton # wywolanie z parametrem n-1 lw $a0,0($sp) # odtworzenie a0 # w $v0 jest wynik sumton(n-1) add $v0,$a0,$v0 # $v0 = n + sumton(n-1) lw $ra,4($sp) # odtworzenie adresu powrotu addi $sp,$sp,8 # zwalniamy dwa miejsca na stosie jr $ra # powrot z funkcji main: addi $a0,$zero, 10 # wywolanie z parametrem 10 jal sumton addi $a0, $v0, 0 # wypisanie wyniku li $v0, 1 # wypisanie wyniku p. 14/28
15 p. 15/28 Konwencja Strona wywoływana powinna zachowywać (odtworzyć przy powrocie): wartości rejestów $s0-$s7 wartość $sp adres powrotu $ra oczywiście nie wolno jej naruszyć pamięci powyżej $sp Nie musi się natomiast troszczyć o: wartości rejestów $t0-$t9 argumenty wywołania $a0-$a3 zawartość stosu poniżej $sp Jest to oczywiście tylko jedna z kilku możliwych konwencji.
16 p. 16/28 Uwaga o rejestrze $fp Podczas wywoływania funkcji na stosie odkładana jest tak zwana ramka wywołania (zawierajaca potrzebne wartości rejestrów, ewentualnie dodatkowe zmienne lokalne, argumenty wywołania czy zwracane wartości). My odwoływaliśmy się do wartości z ramki tylko za pomoca rejestru $sp. Czasem używa się dodatkowo rejestru $fp (frame pointer) wskazujacego na najwyższy adres ramki. Wtedy w funkcji możemy np. modyfikować wartość $sp. Użycie $fp nie jest jednak konieczne. I tak np. kompilator GNU MIPS C używa $fp, ale kompilator C z MIPS/Silicon Graphics radzi sobie bez niego (i używa $fp jako kolejnego rejestru na zmienne)
17 p. 17/28 Operacje na napisach Dotychczas operowaliśmy na słowach (32-bitowych). Istnieje też dostęp do poszczególnych bajtów. lb $s2, 3($s1) - load byte rozkaz typu I kopiuje bajt o podanym adresie do 8 najmniej znaczacych bitów rejestru i wypełnia resztę rejestru najbardziej znaczacym bitem bajtu (działa przy reprezentacji uzupełnień do 2, jeśli chcemy uzupełnić zerami używamy lbu load byte unsigned). sb $s2, -2($s1) - store byte - kopiuje 8 najmniej znaczacych bitów rejestru. Zazwyczaj powyższe rozkazy używane do operacji na tekstach.
18 p. 18/28 str1:.data.asciiz "Przykładowy napis.".text.globl main strlen: addi $v0, $zero, 0 # -v0 - licznik loop : lb $t0, 0($a0) beq $t0, $zero, EXIT addi $a0, $a0, 1 addi $v0, $v0, 1 j loop EXIT jr $ra main: (...) la $a0, str1 #pseudoroz., tlumaczony na lui i o jal strlen (...)
19 p. 19/28 Rozkazy logiczne Zestaw operacji bitowych: and, or, nor, andi, ori, nor, xor, xori. W jaki sposób załadować do rejestru konkretny wzorzec bitowy, np. 0x5467a7ba? Nie może być jednej instrukcji - 32 bity! lui $t0, 0x5467 # niższe bity rejestru ustawia na 0. ori $t0, $t0, 0xa7ba Operacje przesunięcia: sll $t0, $t1, 7, analogicznie srl (dopełnia zerami) rozkazy typu R - przesuwamy o maksymalnie 32 pozycje przesunięcie kodowane w polu shamt, (jeden rejestr wolny).
20 p. 20/28 Mnożenie i dzielenie Mnożenie: mult $s0, $s1 64 bity wyniku. Wynik zapisywany w rejestrach HI i LO. Bardziej znaczac a częśc wyniku można uzyskać rozkazem mfhi $t0, mniej znaczac a: mflo $t1. Także w wersji dla liczb bez znaku multu $s0, $s1 Istnieje pseudorozkaz mul r1, r2, r3 zapisywana jest mniej znaczaca częśc wyniku Dzielenie: div $s2, $s3. Wynik w rejestrze LO, reszta z dzielenia w rejestrze HI. divu dzielenie bez znaku
21 Liczby zmiennopozycyjne Na liczbach zmiennopozycyjnych operuja inne układy cyfrowe niż na całkowitych Mamy więc inne rozkazy oraz specjalny zestaw rejestrów zmiennopozycyjnych - $f0, $f31. Jednostka zmiennopozycyjna nazywana jest koprocesorem 1. Rozkazy add.s, sub.s, add.d, sub.d (format R), odpowiednio single i double precision. Musza być nowe rozkazy przesyłania - 32 rejestry - 5 bitów! lwc1 $f1, 40($s1), swc1, ldc1, swc1 dla trybu double. Uwaga: rejestry sa 32-bitowe, a format zmiennopozycyjny double 64-bitowy. W przypadku double wartości przechowywane sa w parach rejestrów odwołujemy się tylko do rejestrów parzystych. p. 21/28
22 Liczby zmiennopozycyjne -cd. Przykład wczytywania liczb zmiennopozycyjnych:.data.text floats:.float , 3.14 (...) lwc1 $f0, floats lwc1 $f1, floats + 4 Dla liczb zmiennopozycyjnych sa osobne rozkazy skoku: c.eq.s $f1, $f2 bc1t bc1f Label Label2 Jeśli rejestry $f1 i $f2 przechowuja ta sama wartość to skocz pod Label, w przeciwnym wypadku pod Label2. (wynik porównania w specjalnym jednobitowym rejestrze niedostępnym dla programisty). p. 22/28
23 p. 23/28 Liczby zmiennopozycyjne -cd. Mnożenie: mul.s $f0, $f1, $f2 Dzielenie: div.s...
24 p. 24/28 Wejście-wyjście Prawdziwe procesory MIPS używaja tzw. wejścia-wyjścia odwzorowanego w pamięci (memory mapped IO), tzn. operuja na IO za pomoca lw, sw. Jest tylko jedno urzadzenie wejściowe (klawiatura) oraz jedno wyjściowe (monitor). Każde z nich ma dwa rejestry: 0xffff rejestr sterujacy wejściem (tylko dwa ostatnie bity maja znaczenie) 0xffff rejestr danych wejściowych (przechowuje jeden bajt) 0xffff rejestr sterujacy wyjściem (tylko dwa ostatnie bity maja znaczenie) 0xffff000c - rejestr danych wyjściowych
25 p. 25/28 Wejście-wyjście cd. Załóżmy, ze chcemy wczytać pojedynczy bajt do rejestru $s2: lui $t0, oxffff lw $s2, 4 ($t0) Problem: chcemy odczytywać tylko gdy urzadzenie wejściowe jest gotowe. Musimy wićc najpierw sprawdzić stan urzadzenia. A konkretnie pierwszy bit rejestru 0xffff0000. Procesor musi zaczekac aż ten bit przyjmie wartość 1: lui $t0, 0xffff Wait: lw $t1, 0($t0) # ladujemy rejestr do t1 andi $t1, $t1, 0x0001 beq lw t1, $zero, Wait $s2, 4 ($t0) # zeruj wszystkie bity oproc
26 p. 26/28 Funkcje systemowe Operacje wejścia-wyjścia za pomoca funkcji systemowych: 1 Print an Integer ($a0 = wartość do wydrukowania) 2 Float 3 Print Double 4 Print String ($a0 = adres napisu) 5 Read an Integer (wczytany wynik zwracany w $v0) 6 Read Float 7 Read Double 8 Read a String ($a0 = adres pod jaki należy wpisać, $a1 = długość przydzielonej pamięci) + kilka innych
27 p. 27/28 Użycie funkcji systemowych.data str:.asciiz "the answer = ".text li $v0, 4 la $a0, str syscall li $v0, 1 li $a0, 5 syscall
28 p. 28/28 Rysunek z następnego wykładu 0 4 Add Add ALU result M u x 1 Instruction [31 26] Control RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Shift left 2 PC Read address Instruction [25 21] Read register 1 Read Instruction [20 16] data 1 Read register 2 Zero Instruction 0 [31 0] ALU M Read ALU Write 0 data 2 result Instruction u Instruction [15 11] x register M memory u 1 x Write 1 data Registers Address Write data Read data Data memory 1 M u x 0 Instruction [15 0] 16 Sign 32 extend ALU control Instruction [5 0]
List s a R ozkazó z w: w Ję J z ę y z k y k k o k mp o u mp t u er e a a ( cd c. d )
Lista Rozkazów: Język komputera (cd.) Procedury int funkcja (int n){ int i,j; (...) return j; } main () { int i,j; i=funkcja(i);... j=funkcja(i); } funkcja operuje na pewnych rejestrach, być może na tych
Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }
main() { int i,j,k,m;... i = mult(j,k);... m = mult(i,i);... Procedury int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; return product;
Lista Rozkazów: Język komputera
Lista Rozkazów: Język komputera Większość slajdów do tego wykładu to tłumaczenia i przeróbki oficjalnych sladjów do podręcznika Pattersona i Hennessy ego Lista rozkazów Zestaw rozkazów wykonywanych przez
1 Ogolnie o asemblerach. 2 Zarys architektury MIPS
1 Ogolnie o asemblerach Kod zerojedynkowy jakim posªuguje si komputer jest niewygodny dla czªowieka. Pomysª: wprowadzenie symbolicznych nazw instrukcji, odzieli pola argumentów. Wci» jest niewygodnie,
Architektura typu Single-Cycle
Architektura typu Single-Cycle...czyli budujemy pierwszą maszynę parową Przepływ danych W układach sekwencyjnych przepływ danych synchronizowany jest sygnałem zegara Elementy procesora - założenia Pamięć
Struktura 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
. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A
Symulator Escape Konfiguracja ogólna Enable MUL and DIV Complete Set of Comp.Oper Sign Extension of B/H/W Memory Oper on B/H/W Program Program Dane Dane Załaduj konfigurację symulatora (File -> OpenFile)
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.
Plan wykładu. Architektura systemów komputerowych. Cezary Bolek. Składowe architektury komputera
Architektura systemów komputerowych Konwencjonalny poziom maszynowy Cezary Bolek Katedra Informatyki Plan wykładu Składowe architektury komputera Architektura poziomu maszynowego Organizacja jednostki
2.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
Architektura typu multi cycle
PC ux ress Write data emdata [3-26] [25-2] [2-6] [5-] register [5-] Cond IorD em emwrite emtoreg IRWrite [25-] [5-] Outputs Control Op [5-] ux ux PCSource Op SrcB Src RegWrite RegDst register register
Architektura 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
1 Zarys architektury MIPS
1 Zarys architektury MIPS Procesory rmy MIPS Technologies u»ywane s w komputerach (Silicon Graphics), skomputeryzowanych zabawkach (Nintendo, Sony) oraz w systemach wbudowanych (w jakie wyposa»one s np.
Ję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
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
Architektura 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
Mikrooperacje. Mikrooperacje arytmetyczne
Przygotowanie: Przemysław Sołtan e-mail: kerk@moskit.ie.tu.koszalin.pl Mikrooperacje Mikrooperacja to elementarna operacja wykonywana podczas jednego taktu zegara mikroprocesora na informacji przechowywanej
MOŻ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
Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer
Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny
A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym
MARIE A Machine Architecture that is Really Intuitive and Easy http://computerscience.jbpub.com/ecoa Słowo 16b Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym od 8000h (- 32,768 = -2^15) do 7FFFh
Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego
Programowanie w C++ Opis procesora Sextium materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego 1 Opis procesora Sextium II Budowa procesora Sextium II 1 o architekturze typu RISC 2 jest przedstawiona
Przetwarzanie potokowe pipelining
Przetwarzanie potokowe pipelining (część A) Przypomnienie - implementacja jednocyklowa 4 Add Add PC Address memory ister # isters Address ister # ister # memory Wstęp W implementacjach prezentowanych tydzień
Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1
Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne
Architektura systemów komputerowych. Poziom układów logicznych. Układy mnoŝące i dzielące
Architektura systemów komputerowych Poziom układów logicznych. Układy mnoŝące i dzielące Cezary Bolek Katedra Informatyki Plan wykładu Układy mnoŝące liczby całkowite MnoŜenie liczb bez znaku MnoŜarka
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
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ą
Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:
Operatory logiczne Komputery i ich logika AND - && Podstawy programowania w C++ Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com
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
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Programowanie Niskopoziomowe
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 Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,
1. Operacje logiczne A B A OR B
1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne
Podstawy 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
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.
Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)
Wstęp doinformatyki Architektura co to jest? Architektura Model komputera Dr inż Ignacy Pardyka Slajd 1 Slajd 2 Od układów logicznych do CPU Automat skończony Slajd 3 Slajd 4 Ile jest automatów skończonych?
Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika
Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne
Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne 1. Bit Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry w systemie (liczbowym)
Ć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ę
Pracownia Komputerowa wykład VI
Pracownia Komputerowa wykład VI dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada 1 Przypomnienie 125 (10) =? (2) Liczby całkowite : Operacja modulo % reszta z dzielenia: 125%2=62 reszta 1
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki
Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej
Architektura 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
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
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Zadanie 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
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,
Podstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach
Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda
Technika 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,
Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia Krzysztof Banaś Podstawy programowania 1 Typy danych Podstawowe wbudowane typy danych języka C: _Bool 0 i 1 (C99) znaki (char) 7
Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.
Plan wykładu rchitektura systemów komputerowych Poziom układów logicznych. Układy mnoŝące i dzielące Cezary Bolek Katedra Informatyki Układy mnoŝące liczby całkowite MnoŜenie liczb bez znaku MnoŜarka sekwencyjna
Programowanie 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
/* 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
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q
LABORAORIUM PROCESORY SYGAŁOWE W AUOMAYCE PRZEMYSŁOWEJ Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q 1. Zasady arytmetyki stałoprzecinkowej. Kody stałopozycyjne mają ustalone
Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski
Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski Norma IEC 1131 Języki tekstowe Języki graficzne Języki
Programowanie 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
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
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
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
Programowanie 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
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
Shellcody a architektura MIPS na systemach IRIX. Adam Zabrocki.
Adam Zabrocki http://pi3.shellcode.pl pi3@itsec.pl Architektura MIPS: MIPS Microprocessor without Interlocked Piped Stages: RISC Rationalized Instruction Set Computers (Reduced Instruction Set Computers)
Ję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 -
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów
Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).
Tranzystor JFET i MOSFET zas. działania
Tranzystor JFET i MOSFET zas. działania brak kanału v GS =v t (cutoff ) kanał otwarty brak kanału kanał otwarty kanał zamknięty w.2, p. kanał zamknięty Co było na ostatnim wykładzie? Układy cyfrowe Najczęściej
Lista instrukcji mikroprocesora 8086. Programowanie w assemblerze
Lista instrukcji mikroprocesora 8086 Programowanie w assemblerze Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora 8086 Lista instrukcji mikroprocesora
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
Podstawy Informatyki Języki programowania
Podstawy Informatyki Języki programowania alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Wprowadzenie Języki programowania 2 Przykład Wczytywanie programu do pamięci Podsumowanie 3 Przykład
Pliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
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ę
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
Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze
Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych
Programowanie 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
Podstawy 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
Ć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
Wykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011
Układy arytmetyczne Joanna Ledzińska III rok EiT AGH 2011 Plan prezentacji Metody zapisu liczb ze znakiem Układy arytmetyczne: Układy dodające Półsumator Pełny sumator Półsubtraktor Pełny subtraktor Układy
Języki formalne i techniki translacji
Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz
Temat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Pracownia Komputerowa wyk ad VI
Pracownia Komputerowa wyk ad VI dr Magdalena Posiada a-zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Przypomnienie 125 (10) =? (2) Liczby ca kowite
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
Lista 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
Architektura komputerów
Architektura komputerów Wykład 4 Jan Kazimirski 1 Reprezentacja danych 2 Plan wykładu Systemy liczbowe Zapis dwójkowy liczb całkowitych Działania arytmetyczne Liczby rzeczywiste Znaki i łańcuchy znaków
Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze
Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 5 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie
Programowalne układy logiczne
Programowalne układy logiczne Mikroprocesor Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 6 grudnia 2014 Zbudujmy własny mikroprocesor Bardzo prosty: 16-bitowy, 16 rejestrów
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
Magistrala systemowa (System Bus)
Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki systemowa (System Bus) Pamięć operacyjna ROM, RAM Jednostka centralna Układy we/wy In/Out Wstęp do Informatyki
Rozszerzalne kody operacji (przykład)
Tryby adresowania natychmiastowy (ang. immediate) bezpośredni (ang. direct) pośredni (ang. indirect) rejestrowy (ang. register) rejestrowy pośredni (ang. register indirect) z przesunieciem (indeksowanie)
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
organizacja procesora 8086
Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala
Języki i paradygmaty programowania
Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Spis rzeczy 1 Operatory w C/C++ Operatory Operatory w C/C++ operator - rodzaj funkcji wbudowanej w język; różnica notacja
Prosty procesor dla framgentu listy rozkazów MIPSa
p. /33 Prosty procesor dla framgent listy rozkazów IPSa (rysnki pochodza z ksiażki Hennessy ego i Pattersona) p. 2/33 Wstęp Naszym celem będzie zaprojektowanie prostego procesora realizjacego fragment
Metody 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
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
PROGRAMOWANIE 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
Przykładowe pytania DSP 1
Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.
Rozpoznawanie obrazu Implementujesz oprogramowanie do rozpoznawania obrazu dla robota. Za każdym razem, gdy robot robi zdjęcie kamerą, jest ono zapisywane jako czarno-biały obraz w pamięci robota. Każdy