ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH. Babbage i jego komputer mechaniczny. Ada programuje maszynę Babbage a. architektura. c Dr inż.

Wielkość: px
Rozpocząć pokaz od strony:

Download "ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH. Babbage i jego komputer mechaniczny. Ada programuje maszynę Babbage a. architektura. c Dr inż."

Transkrypt

1 Wstęp 1 Wstęp ARCHITETURA SYSTEMÓW OMPUTEROWYCH architektura c Dr inż. Ignacy Pardyka UNIWERSYTET JANA OCHANOWSIEGO w ielcach 1 Rok akad. 215/216 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura 1 Instytut Fizyki, Zakład Informatyki, ignacy.pardyka@ujk.edu.pl c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 1 / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 2 / 11 Wstęp Babbage i jego komputer mechaniczny Wstęp Ada programuje maszynę Babbage a Charles Babbage, Attended Cambridge University and married Georgiana Whitmore in Invented the Analytical Engine, the world s first mechanical computer. Also invented the cowcatcher and the universal postage rate. Interested in lock-picking, but abhorred street musicians (image courtesy of Fourmilab Switzerland, Ada Lovelace, Wrote the first computer program. It calculated the Bernoulli numbers using Charles Babbage s Analytical Engine. She was the only legitimate child of the poet Lord Byron. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 3 / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 4 / 11

2 Wstęp Poziomy abstrakcji cyfrowego systemu komputerowego Architektura komputera Wstęp Application Software Operating Systems Architecture Microarchitecture Logic Digital Circuits Analog Circuits Devices Physics > hello world! + + komputer postrzegany okiem programisty zestaw instrukcji (język) i miejsce do przechowywania danych (rejestry i pamięć) typowe architektury: x86, MIPS, SPARC, PowerPC, IA-64 aby zrozumieć architekturę, należy poznać jej język: słowa, tj. instrukcje (instructions) słownik, tj. zestaw instrukcji (instruction set) instrukcje wskazują operację jaką ma wykonać komputer, i na jakich danych (operandach) operandy mogą być w rejestrach, w pamięci, w słowie instrukcji fizyczny komputer (hardware) rozumie jedynie język zakodowany binarnie (ciągi zer i jedynek), tj. rozumie język maszynowy (natywny danego procesora) program zapisany w języku wyższego poziomu jest tłumaczony (translation) na język maszynowy. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 5 / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 6 / 11 Wstęp Algebra Boole a - aksjomaty Wstęp oncepcja programu pamiętanego Machine Code Stored Program George Boole, Born to working-class parents and unable to afford a formal education, Boole taught himself mathematics and joined the faculty of Queen s College in Ireland. He wrote An Investigation of the Laws of Thought (1854), which introduced binary variables and the three fundamental logic operations: AND, OR, and NOT (image courtesy of the American Institute of Physics). Axiom Dual Name A1 B = ifb 1 A1 B = 1ifB Binary field A2 = 1 A2 1 = NOT A3 = A = 1 AND/OR A4 1 1 = 1 A4 + = AND/OR A5 1 = 1 = A5 1 + = + 1 = 1 AND/OR lw $t2, 32($) add $s, $s1, $s2 addi $t, $s3, 12 sub $t, $t3, $t5 x8ca2 x23282 x2268fff4 x16d422 Address Instructions 4C 1 6 D F F F C A 2 Main Memory PC c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 7 / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 8 / 11

3 Wstęp Budowanie programu binarnego Języki wysokiego poziomu Wstęp Grace Hopper, Graduated from Yale University with a Ph.D. in mathematics. Developed the first compiler while working for the Remington Rand Corporation and was instrumental in developing the COBOL programming language. As a naval officer, she received many awards, including a World War II Victory Medal and the National Defense Service Medal. High-Level Code Compiler Assembler Object File Linker Executable Loader Memory Object Files Library Files lata 6. XX w.: Algol, Fortran lata 8. XX w.: rozwój języków proceduralnych: Pascal, C obecnie: języki obiektowe: C++, C#, Java, Eiffel,... struktura komputera zaprojektowana, by łatwo i wydajnie wykonywać programy tłumaczone z języka wysokiego pozimu na język natywny procesora poziomy abstrakcji języków Language Matlab Perl Python Java C Assembly Language Machine Language Description Designed to facilitate heavy use of math functions Designed for scripting Designed to emphasize code readability Designed to run securely on any computer Designed for flexibility and overall system access, including device drivers Human-readable machine language Binary representation of a program c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 9 / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 1 / 11 Wstęp Program w języku C 1 Wstęp int x, y; // zmienne globalne char * p; int myadd(int a, int b){ int r; // zmienna lokalna r = a + b; return r;} void cleanup(void){ free(p);} // dealokacja zmiennej dynamicznej int main (void){ p = malloc(1); x = myadd(2,3); cleanup();} // alokacja // dealokacja Dennis Ritchie, Brian ernighan, Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

4 1 Wstęp 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura Asembler język asemblera: reprezentacja języka maszynowego w formie czytelnej dla człowieka instrukcje: specyfikują operację i operandy operandy: reprezentowane binarnie, zgodnie z przyjętym standardem reprezentacji architektura MIPS: prosta regularna popularna łatwa do nauki. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Instrukcje Instrukcje dodawanie język C: a = b + c; asembler: add a, b, c odejmowanie język C: a = b - c; asembler: sub a, b, c składnia instrukcji asemlera: mnemonic i operandy mnemonic określa operację, np. add operandy źródłowe (ang. source): b, c operand wynikowy (docelowy, ang. destination): a. instrukcja w C może, oczywiście, zawierać więcej prostych operacji, np. język C: a = b + c - d; reprezentacja w asemblerze: dwie instrukcje sub t, c, d add a, b, t MIPS jest architekturą typu RISC: stosunkowo mały zestaw instrukcji instrukcje proste proste tryby adresowania operandów łatwa implementacja (mikroarchitektura). c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

5 Operandy Operandy Operandy reprezentowane binarnie standardy reprezentacji danych, zależnie od typu, np. naturalny kod dwójkowy (NBC) uzupełnienie dwójkowe (U2) zmiennoprzecinkowy (IEEE754) znakowy (ASCII, UNICODE) przechowywane w rejestrach w pamięci albo w słowie instrukcji programu czas dostępu do operandów w pamięci jest najdłuższy procesor jest nazywany 32-bitowym, gdy operandy reprezentowane są na 32 bitach. operacje są wykonywane szybciej, gdy operandy są umieszczone w rejestrach (lub w słowie instrukcji) w asemblerze MIPS rejestry służące do przechowywania zmiennych (ang. saved registers): s, s1,..., s7 mają nazwy: $s, $s1,... np. instrukcja języka C: a = b + c; w asemblerze MIPS: add $s, $s1, $s2 przy założeniu, że wcześniej zmienne a, b, c umieszczono, odpowiednio, w rejestrach: $s, $s1, $s2 do przechowywania rezultatów tymczasowych przewidziano rejestry $t, $t1,..., $t9 (ang. temporary registers), np. instrukcja C: a = b + c - d; jeśli: $s = a, $s1 = b, $s2 = c, $s3 = d w asemblerze MIPS zostanie wyrażona następująco: sub $t, $s2, $s3 # t = c -d add $s, $s1, $t # a = b + t c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Rejestry MIPS Przykład Name Number Use $ the constant value $at 1 assembler temporary $v $v1 2 3 function return value $a $a3 4 7 function arguments $t $t temporary variables $s $s saved variables $t8 $t temporary variables $k $k operating system (OS) temporaries $gp 28 global pointer $sp 29 stack pointer $fp 3 frame pointer $ra 31 function return address zakładając, że zmienne są przechowywane w rejestrach przetłumaczyć na język asemblera fragment programu: a = b - c; f = (g + h) - (i + j); przykładowe rozwiązanie: # MIPS assembly code # $s = a, $s1 = b, $s2 = c, $s3 = f, $s4 = g, $s5 = h # $s6 = i, $s7 = j sub $s, $s1, $s2 # a = b - c add $t, $s4, $s5 # $t = g + h add $t1, $s6, $s7 # $t1 = i + j sub $s3, $t, $t1 # f = (g + h) - (i + j) c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 2 / 11

6 Pamięć adresowanie pamięci Pamięć dostęp do danych w pamięci z adresowaniem słów pamięć z adresowaniem słów Word Address Data 3 4 F pamięć z adresowaniem bajtów Word Address C E E F2F 1AC7 ABCDEF 78 Data 4 F E E F2F1 AC7 ABCDEF 78 width = 4 bytes Word 3 Word 2 Word 1 Word Word 3 Word 2 Word 1 Word odczyt z pamięci: jeśli adresowane są słowa pamięci, to lw $s3, 1($) # słowo spod adresu 1 zapisz do $s3 efektywny adres słowa pamięci (ang. effective address): suma adresu bazowego (ang. base address) zapisanego w nawiasie i przesunięcia (ang. offset) zapisanego przed nawiasem czyli, efektywny adres słowa w powyższej instrukcji lw jest równy 1 pod adresem słowa: x1 w pamięci była wartość: xf2f1ac7 zapis do pamięci: instrukcja sw sw $s7, 5($) # zapisz zawartość $s7 pod adres 5 adres bazowy może być w dowolnym rejestrze MIPS. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Pamięć dostęp do danych w pamięci z adresowaniem bajtów Pamięć Big-Endian, Little-Endian MIPS: adresowanie bajtów, nie słów adres 32-bitowej danej jest wielokrotnością 4, np. instrukcja lw, np. lw $s3, 4($) # wczytaj słowo spod adresu 4 do $s3 są odrębne instrukcje dostępu do danych 1-bajtowych lb, sb. pamięć z adresowaniem bajtów: bajty w słowie mogą być różnie ułożone adres słowa: najbardziej znaczący bajt (Big-Endian) adres słowa: najmniej znaczący bajt (Little-Endian) big-endian, little-endian Big-Endian Byte Address C D E F 8 9 A B MSB LSB Word Address C 8 4 Little-Endian Byte Address F E D C B A MSB LSB c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

7 Przykład załóżmy, że rejestr $s zawiera początkowo x jaka będzie zawartość $s po wykonaniu fragmentu programu na komputerze z system a) big-endian, b) little-endian sw $s, ($) lb $s, 1($) rozwiązanie: po instrukcji sw $s, ($) zawartość pamięci: Big-Endian Little-Endian Byte Address Word Address Byte Address Data Value Data Value MSB LSB MSB LSB po instrukcji lb $s, 1($) zawartość $s: x45, gdy big-endian x67, gdy little-endian. Adresowanie natychmiastowe stałe przechowywane w słowie instrukcji w słowie instrukcji można przechowywać wartości stałe, przydatne, np. do tworzenia adresu efektywnego, albo wręcz operandy adresowanie natychmiastowe (ang. immediate) stała jest w pobranej już instrukcji, więc nie trzeba sięgać po tę stałą ani do rejestru, ani do pamięci np. w słowie instrukcji lw przechowywany jest offset instrukcje arytmetyczne z adresowaniem natychmiastowym, np. addi High-Level Code a = a+4; b = a 12; MIPS # $s = a, $s1 = b addi $s, $s, 4 # a = a+4 addi $s1, $s, 12 # b = a 12 stała jest często przechowywana w instrukcji, w polu 16-bitowym, w reprezentacji uzupełnienia dwójkowego (U2, ang. 2 complement), czyli jako wartość z zakresu [-32768, 32767]. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Język maszynowy Instrukcje typu rejestrowego, R-type język asemblera jest dość wygodny do czytania przez człowieka jednak układy cyfrowe rozumieją tylko zera i jedynki dlatego niezbędne jest tłumaczenie (ang. translation) instrukcji z języka asemblera na język maszyny (ang. machine language) w rezultacie instrukcje zostają zakodowane binarnie MIPS: instrukcje w formatach 32-bitowych typu rejestrowego (ang. R-type): operandy w trzech rejestrach natychmiastowego (ang. I-type): operandy w dwóch rejestrach i stała 16-bitowa w słowie instrukcji skoku (ang. J-type): jeden operand w postaci stałej 26-bitowej w słowie instrukcji opcjonalnie, instrukcje zmiennoprzecinkowe (ang. F-type): operandy w rejestrach zmiennoprzecinkowych f..f31. wszystkie trzy operandy w rejestrach: dwa operandy źródłowe (ang. source): rs, rt jeden operand docelowy (ang. destination): rd słowo instrukcji: pola: R-type op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits op: kod operacji (ang. opcode) funct (ang. function): rozszerzenie kodu operacji, np. R-type: opcode = 2 dla operacji add: funct = 1 2 dla operacji sub: funct = 11 2 pola rs, rt, rd zawierają 5-bitowe numery rejestrów. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

8 Rejestry MIPS: numery rejestrów Instrukcje typu rejestrowego, R-type Name Number Use $ the constant value $at 1 assembler temporary $v $v1 2 3 function return value $a $a3 4 7 function arguments $t $t temporary variables $s $s saved variables $t8 $t temporary variables $k $k operating system (OS) temporaries $gp 28 global pointer $sp 29 stack pointer przykład: add $s, $s1, $s2 sub $t, $t3, $t5 Field Values Machine Code op rs rt rd shamt funct op rs rt rd shamt funct ( x 23282) ( x 16D422) 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits ćwiczenie: zakodować instrukcję add $t, $s4, $s5 odnajdujemy numery rejestrów z tabeli i umieszczamy w polach: add $t, $s4, $s5 Field Values Machine Code op rs rt rd shamt funct op rs rt rd shamt funct bits 5 bits 5 bits 5 bits 5 bits 6 bits ( x 29542) $fp 3 frame pointer $ra 31 function return address c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 3 / 11 Instrukcje typu natychmiastowego, I-type słowo instrukcji: I-type op rs rt imm 6 bits 5 bits 5 bits 16 bits dwa operandy w rejestrach, jeden w polu instrukcji operandy źródłowe (ang. source): rs, imm pole rt wskazuje na operand docelowy (ang. destination), np. dla instrukcji addi, lw, albo na operand źródłowy, np. dla instrukcji sw przykład kodowania: addi $s, $s1, 5 Field Values Machine Code op rs rt imm op rs rt imm ( x 2235) Instrukcje typu natychmiastowego, I-type ćwiczenie zakodować instrukcję: lw $s3, -24($s4) rozwiązanie: z tabeli nazw rejestrów bierzemy numery rejestrów i zapisujemy: pole rs: 2 (numer rejestru $s4) pole rt: 19 (numer rejestru $s3) kod operacji wpisujemy do pola op w polu imm zapisujemy reprezentację wartości -24 w kodzie U2 lw $s3, 24($s4) Field Values op rs rt imm bits 5 bits 5 bits 16 bits Machine Code op rs rt imm (x8e93ffe8) 8 E 9 3 F F E 8 addi $t, $s3, 12 lw $t2, 32($) sw $s1, 4($t1) bits 5 bits 5 bits 16 bits 6 bits 5 bits 5 bits 16 bits ( x 2268FFF4) ( x 8CA2) ( x AD314) rejestr bazowy $s4 jest 32-bitowy, więc stała 16-bitowa imm musi być rozszerzona (ze znakiem) do 32 bitów (ang. sign extension). c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

9 Instrukcje skoku, J-type Instrukcje zmiennoprzecinkowe: F-type jeden operand 26-bitowy: adres skoku słowo instrukcji: op J-type addr 6 bits 26 bits instrukcje typu J zostaną szczegółowo omówione w dalszej kolejności, jako instrukcje rozgałęzień pole kodu operacji: op = 17 pojedynczej precyzji: cop = 16 podwójnej precyzji: cop = 17 fs, ft, fd: n-ry rejestrów source, target, destination rejestry zmiennoprzecinkowe: Name Number Use op F-type cop ft fs fd funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits $fv $fv1, 2 function return value $ft $ft3 4, 6, 8, 1 temporary variables $fa $fa1 12, 14 function arguments $ft4 $ft5 16, 18 temporary variables $fs $fs5 2, 22, 24, 26, 28, 3 saved variables c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Interpretacja kodu maszynowego oncepcja programu pamiętanego aby zinterpretować instrukcję, trzeba najpierw rozkodować poszczególne pola jeśli pole op =, to instrukcja typu rejestrowego w przeciwnym razie jest to instrukcja typu natychmiastowego, instrukcja skoku, albo instrukcja zmiennoprzecinkowa rozkodujmy następujące dwie instrukcje MIPS: x2237fff1 x2f3422 rozwiązanie: zapisujemy słowa binarnie i odczytujemy pola Machine Code op rs rt imm (x2237fff1) F F F 1 op rs rt rd shamt funct (x2f3422) F Field Values op rs rt imm op rs rt rd shamt funct addi $s7, $s1, 15 sub $t, $s7, $s3 program zapisany w języku maszynowym MIPS może być postrzegany jako ciąg liczb 32-bitowych binarną reprezentację programu należy umieścić w pamięci programu powyższa idea nosi nazwę koncepcji programu pamiętanego i stanowi o uniwersalności komputerów lw $t2, 32($) add $s, $s1, $s2 addi $t, $s3, 12 sub $t, $t3, $t5 Machine Code x8ca2 x23282 x2268fff4 x16d422 Address Instructions 4C 1 6 D Stored Program F F F C A 2 Main Memory wymieniając program zmieniamy działanie urządzenia kolejna instrukcja jest pobierana z pamięci, interpretowana, a następnie wykonywana jest operacja wskazana w instrukcji. PC c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

10 oncepcja programu pamiętanego w celu wykonania programu (ang. run, execute program) procesor sekwencyjnie pobiera instrukcje z pamięci (ang. instruction fetch) po pobraniu każdej instrukcji 1 instrukcja jest dekodowana sprzętowo (ang. hardware decoding) 2 sprzętowo jest wykonywana operacja wskazana w instrukcji adres instrukcji, która ma być pobrana jest przechowywany w rejestrze PC (ang. program counter, pol. licznik rozkazów, wskaźnik instrukcji) autorka koncepcji programu pamiętanego (córka poety Lorda Byrona): MIPS: lista instrukcji pełna lista instrukcji MIPS w dokumentacji oznaczenia na liście instrukcji: [reg]: zawartość rejestru reg imm: pole 16-bitowe w instrukcji I-type addr: adres 26-bitowy w instrukcji J-type SignImm: rozszerzenie 32-bit ze znakiem = {{16{imm[15]}}, imm} ZeroImm: rozszerzenie 32-bit zerami = {16 b, imm} Address: [rs] + SignImm [Address]: zawartość pamięci spod Address BTA: branch target address1 = PC (SignImm << 2) JTA: jump target address = {(PC + 4)[31:28], addr, 2 b} label: etykieta instrukcji Ada Lovelace, c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 MIPS: lista instrukcji MIPS: lista instrukcji Opcode Name Description Operation () R-type all R-type instructions see Table B.2 1 (1) (rt = /1) bltz rs, label / bgez rs, label branch less than zero/branch greater than or equal to zero 1 (2) j label jump PC = JTA if ([rs] < ) PC = BTA/ if ([rs] ) PC = BTA 11 (3) jal label jump and link $ra = PC + 4, PC = JTA 1 (4) beq rs, rt, label branch if equal if ([rs] == [rt]) PC = BTA 11 (5) bne rs, rt, label branch if not equal if ([rs]!= [rt]) PC = BTA 11 (6) blez rs, label branch if less than or equal to zero if ([rs] ) PC = BTA 111 (7) bgtz rs, label branch if greater than zero if ([rs] > ) PC = BTA 1 (8) addi rt, rs, imm add immediate [rt] = [rs] + SignImm 11 (9) addiu rt, rs, imm add immediate unsigned [rt] = [rs] + SignImm 11 (1) slti rt, rs, imm set less than immediate [rs] < SignImm? [rt] = l : [rt] = 111 (11) sltiu rt, rs, imm set less than immediate unsigned [rs] < SignImm? [rt] = l : [rt] = 11 (12) andi rt, rs, imm and immediate [rt] = [rs] & ZeroImm 111 (13) ori rt, rs, imm or immediate [rt] = [rs] ZeroImm 1111 (15) lui rt, imm load upper immediate [rt] = {imm, 16'b} 1 (16) (rs = /4) mfc rt, rd / mtc rt, rd move from/to coprocessor 11 (17) F-type fop = 16/17: F-type instructions see Table B.3 11 (17) (rt = /1) 111 (28) (func = 2) bc1f label/ bc1t label fop = 8: branch if fpcond is FALSE/TRUE [rt] = [rd]/[rd] = [rt] (rd is in coprocessor ) if (fpcond == ) PC = BTA/ if (fpcond == 1) PC = BTA mul rd, rs, rt multiply (32-bit result) [rd] = [rs] x [rt] 1 (32) lb rt, imm(rs) load byte [rt] = SignExt ([Address] 7:) 11 (33) lh rt, imm(rs) load halfword [rt] = SignExt ([Address]15:) 111 (35) lw rt, imm(rs) load word [rt] = [Address] 11 (36) lbu rt, imm(rs) load byte unsigned [rt] = ZeroExt ([Address]7:) 111 (37) lhu rt, imm(rs) load halfword unsigned [rt] = ZeroExt ([Address]15:) 111 (14) xori rt, rs, imm xor immediate [rt] = [rs] ^ ZeroImm c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 4 / 11

11 MIPS: lista instrukcji MIPS: lista instrukcji typu R Funct Name Description Operation () sll rd, rt, shamt shift left logical [rd] = [rt] << shamt 1 (2) srl rd, rt, shamt shift right logical [rd] = [rt] >> shamt 11 (3) sra rd, rt, shamt shift right arithmetic [rd] = [rt] >>> shamt 1 (4) sllv rd, rt, rs shift left logical variable [rd] = [rt] << [rs]4: 11 (6) srlv rd, rt, rs shift right logical variable [rd] = [rt] >> [rs]4: 111 (7) srav rd, rt, rs shift right arithmetic variable [rd] = [rt] >>> [rs]4: 1 (8) jr rs jump register PC = [rs] Opcode Name Description Operation 11 (4) sb rt, imm(rs) store byte [Address] 7: = [rt] 7: 111 (41) sh rt, imm(rs) store halfword [Address] 15: = [rt] 15: 1111 (43) sw rt, imm(rs) store word [Address] = [rt] 111 (49) lwc1 ft, imm(rs) load word to FP coprocessor 1 [ft] = [Address] 1111 (56) swc1 ft, imm(rs) store word to FP coprocessor 1 [Address] = [ft] 11 (9) jalr rs jump and link register $ra = PC + 4, PC = [rs] 11 (12) syscall system call system call exception 111 (13) break break break exception 1 (16) mfhi rd move from hi [rd] = [hi] 11 (17) mthi rs move to hi [hi] = [rs] 11 (18) mflo rd move from lo [rd] = [lo] 111 (19) mtlo rs move to lo [lo] = [rs] 11 (24) mult rs, rt multiply {[hi], [lo]} = [rs] [rt] 111 (25) multu rs, rt multiply unsigned {[hi], [lo]} = [rs] [rt] 111 (26) div rs, rt divide [lo] = [rs]/[rt], [hi] = [rs]%[rt] 1111 (27) divu rs, rt divide unsigned [lo] = [rs]/[rt], [hi] = [rs]%[rt] c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 MIPS: lista instrukcji typu R MIPS: lista instrukcji zmiennoprzecinkowych Funct Name Description Operation 1 (32) add rd, rs, rt add [rd] = [rs] + [rt] 11 (33) addu rd, rs, rt add unsigned [rd] = [rs] + [rt] 11 (34) sub rd, rs, rt subtract [rd] = [rs] [rt] 111 (35) subu rd, rs, rt subtract unsigned [rd] = [rs] [rt] 11 (36) and rd, rs, rt and [rd] = [rs] & [rt] 111 (37) or rd, rs, rt or [rd] = [rs] [rt] 111 (38) xor rd, rs, rt xor [rd] = [rs] ^ [rt] 1111 (39) nor rd, rs, rt nor [rd] = ~([rs] [rt]) 111 (42) slt rd, rs, rt set less than [rs] < [rt]? [rd] = 1 : [rd] = 1111 (43) sltu rd, rs, rt set less than unsigned [rs] < [rt]? [rd] = 1 : [rd] = Funct Name Description Operation () add.s fd, fs, ft / add.d fd, fs, ft 1 (1) sub.s fd, fs, ft / sub.d fd, fs, ft 1 (2) mul.s fd, fs, ft / mul.d fd, fs, ft 11 (3) div.s fd, fs, ft / div.d fd, fs, ft 11 (5) abs.s fd, fs / abs.d fd, fs 111 (7) neg.s fd, fs / neg.d fd, fs 1111 (58) c.seq.s fs, ft / c.seq.d fs, ft 1111 (6) c.lt.s fs, ft / c.lt.d fs, ft (62) c.le.s fs, ft / c.le.d fs, ft FP add FP subtract FP multiply FP divide FP absolute value FP negation FP equality comparison FP less than comparison FP less than or equal comparison [fd] = [fs] + [ft] [fd] = [fs] [ft] [fd] = [fs] [ft] [fd] = [fs]/[ft] [fd] = ([fs] < )? [ fs] : [fs] [fd] = [ fs] fpcond = ([fs] == [ft]) fpcond = ([fs] < [ft]) fpcond = ([fs] [ft]) c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

12 onstrukcje programistyczne Instrukcje logiczne języki wysokiego poziomu (np. C, Java) stosują konstrukcje bardziej abstrakcyjne niż język asembler typowe konstrukcje programistyczne języków wysokiego poziomu: wyrażenia arytmetyczne i logiczne instrukcje warunkowe (typu if/else) instrukcje pętli (typu for, while) indeksowanie tablic wywoływanie funkcji omówimy sposoby implementacji wysokopoziomowych konstrukcji programistycznych w asemblerze architektury MIPS. instrukcje logiczne MIPS: operacje logiczne and, or, xor, nor na dwóch rejestrach, albo na rejestrze i stałej instrukcje typu rejestrowego (R-type), albo natychmiastowego (I-type) operacje wykonywane są na poszczególnych bitach dwóch argumentów źródłowych wynik zapisywany jest do rejestru docelowego przeanalizować działanie fragmentu programu, przy założeniu że jeden z rejestrów źródłowych zawiera wartość xffff, a drugi x46a1fb7 and $s3, $s1, $s2 or $s4, $s1, $s2 xor $s5, $s1, $s2 nor $s6, $s1, $s2 Source Registers $s $s Result $s $s $s $s c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Instrukcje logiczne Instrukcje przesunięć instrukcje logiczne MIPS typu natychmiastowego: andi, ori, xori operacje na rejestrze i stałej (uwaga: nie ma nori) stała 16-bitowa jest rozszerzana zerami do reprezentacji 32-bitowej przykład: Source Values $s imm zero-extended Result andi $s2, $s1, xfa34 $s ori $s3, $s1, xfa34 $s xori $s4, $s1, xfa34 $s instrukcje przesunięć zawartości rejestru o zadaną liczbę bitów (logicznie albo arytmetycznie) w lewo (ang. left), albo w prawo (ang. right): sll (shift left logical) srl (shift right logical) sra (shift right arithmetical) wynik zapisywany jest do rejestru docelowego (rd, ang. destination) kod maszynowy instrukcji przesunięć format rejestrowy (R-type): sll $t, $s1, 4 srl $s2, $s1, 4 sra $s3, $s1, 4 Field Values op rs rt rd shamt funct bits 5 bits 5 bits 5 bits 5 bits 6 bits Machine Code op rs rt rd shamt funct (x1141) (x11912) (x11993) 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

13 Instrukcje przesunięć Instrukcje przesunięć analiza operacji: Source Values $s shamt 1 Result sll $t, $s1, 4 $t srl $s2, $s1, 4 $s sra $s3, $s1, 4 $s kod maszynowy instrukcji przesunięć format rejestrowy (R-type): Field Values Machine Code op rs rt rd shamt funct op rs rt rd shamt funct sll $t, $s1, (x1141) MIPS oferuje analogiczne instrukcje przesunięć zawartości rejestru o liczbę bitów określoną w innym rejestrze, reprezentującym zmienną (ang. variable-shift): sllv (shift left logical variable) srlv (shift right logical variable) srav (shift right arithmetical variable) wynik zapisywany jest do rejestru docelowego (rd, ang. destination) kod maszynowy instrukcji przesunięć o zmienną liczbę pozycji format rejestrowy (R-type): sllv $s3, $s1, $s2 srlv $s4, $s1, $s2 Field Values op rs rt rd shamt funct Machine Code op rs rt rd shamt funct (x251984) (x251a6) srl $s2, $s1, (x11912) srav $s5, $s1, $s (x251a87) sra $s3, $s1, (x11993) 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 5 / 11 Instrukcje przesunięć Generowanie stałych analiza operacji (zmienna zapisana w $s2 przechowuje liczbę przesunięć): sllv $s3, $s1, $s2 srlv $s4, $s1, $s2 srav $s5, $s1, $s2 Source Values $s $s2 1 Result $s $s $s kod maszynowy instrukcji przesunięć o zmienną liczbę pozycji format rejestrowy (R-type): sllv $s3, $s1, $s2 Field Values op rs rt rd shamt funct Machine Code op rs rt rd shamt funct (x251984) stałe wartości 16-bitowe można w asemblerze architektury MIPS przypisywać zmiennym za pomocą instrukcji addi, np. High-Level Code int a = x4f3c; MIPS # $s = a addi $s, $, x4f3c # a = x4f3c a stałe 32-bitowe za pomocą lui (load upper immediate), po której użyjemy ori, np. High-Level Code int a = x6d5e4f3c; MIPS # $s = a lui $s, x6d5e ori $s, $s, x4f3c # a = x6d5e # a = x6d5e4f3c srlv $s4, $s1, $s (x251a6) srav $s5, $s1, $s (x251a87) 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

14 Instrukcje mnożenia i dzielenia Instrukcje rozgałęzień mnożenie dwóch 32-bitowych liczb daje wartość 64-bitową dzielenie dwóch 32-bitowych liczb daje całkowitą wartość 32-bitową i resztę, również 32-bitową MIPS: dodatkowe dwa rejestry 32-bitowe [hi lo] przechowują wynik mnożenia (albo dzielenia) hi: reszta z dzielenia lo: wynik dzielenia całkowitego dostęp do rejestrów [hi lo] za pomocą dedykowanych instrukcji mfhi (move from hi), mflo (move from lo), np. mflo $s3 mnożenie: mult $s, $s1 wynik w [hi lo] jest też instrukcja 3-argumentowa mult $s3, $s, $s1 wynik 32-bitowy w $s3 dzielenie: div $s, $s1 wynik ($s/$s1) w [hi lo]. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 rozgałęzianie (ang. branching): zmiana domyślnego przepływu sterowania (domyślnie rejestr PC jest zwiększany o 4) w celu opuszczenia pewnych instrukcji w celu powtórnego wykonania instrukcji rozgałęzienie polega na modyfikacji rejestru PC instrukcja rozgałęzienia warunkowego (ang. conditional branch) poleca wykonać test: rozgałęzienie ma zostać zrealizowane tylko wtedy, gdy test ma wartość TRUE instrukcja rozgałęzienia bezwarunkowego (ang. unconditional branch) nakazuje modyfikację PC bezwarunkowo: nazywana jest skokiem (ang. jump) stosowne konstrukcje z języka wysokiego poziomu: if/else, switch/case, while, for są implementowane w języku asemblera architektury MIPS za pomocą instrukcji rozgałęzień warunkowych. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Instrukcje rozgałęzień warunkowych Instrukcje rozgałęzień bezwarunkowych MIPS: dwie instrukcje rozgałęzień warunkowych: beq (branch if equal): beq rs, rt, imm bne (branch if not equal): bne rs, rt, imm przykład: addi $s, $, 4 # $s = +4= 4 addi $s1, $, 1 # $s1 = +1= 1 sll $s1, $s1, 2 # $s1 = 1<<2= 4 beq $s, $s1, target # $s == $s1, so branch is taken addi $s1, $s1, 1 # not executed sub $s1, $s1, $s # not executed target: add $s1, $s1, $s # $s1 = 4+4= 8 etykiety tłumaczone są na adresy. MIPS: trzy instrukcje rozgałęzień bezwarunkowych: j (jump): j target jal (jump and link): do wywoływania funkcji jr (jump register): jr rs (adres w rejestrze rs) przykład: addi $s, $, 4 # $s = 4 addi $s1, $, 1 # $s1 = 1 j target # jump to target addi $s1, $s1, 1 # not executed sub $s1, $s1, $s # not executed target: add $s1, $s1, $s # $s1 = 1+4= 5 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

15 Translacja instrukcji warunkowych Translacja instrukcji warunkowych switch/case instrukcja języka wysokiego poziomu: if może być tak tłumaczona na język asemblera MIPS: High-Level Code if (i == j) f = g+h; f = f i; a instrukcja if/else if (i == j) f = g+h; else f = f i; MIPS # $s = f, $s1 = g, $s2 = h, $s3 = i, $s4 = j bne $s3, $s4, L1 # if i!= j, skip if block add $s, $s1, $s2 # if block: f = g+h L1: sub $s, $s, $s3 # f = f i # $s = f, $s1 = g, $s2 = h, $s3 = i, $s4 = j bne $s3, $s4, else # if i!= j, branch to else add $s, $s1, $s2 # if block: f = g+h j L2 # skip past the else block else: sub $s, $s, $s3 # else block: f = f i L2: switch (amount) { case 2: fee = 2; break; case 5: fee = 3; break; case 1: fee = 5; break; default: fee = ; } // equivalent function using if/else statements if (amount = = 2) fee = 2; else if (amount == 5) fee = 3; else if (amount == 1) fee = 5; else fee = ; # $s = amount, $s1 = fee case2: addi $t, $, 2 # $t = 2 bne $s, $t, case5 # amount == 2? if not, # skip to case5 addi $s1, $, 2 # if so, fee = 2 j done # and break out of case case5: addi $t, $, 5 # $t = 5 bne $s, $t, case1 # amount == 5? if not, # skip to case1 addi $s1, $, 3 # if so, fee = 3 j done # and break out of case case1: addi $t, $, 1 # $t = 1 bne $s, $t, default # amount == 1? if not, # skip to default addi $s1, $, 5 # if so, fee = 5 j done # and break out of case default: add $s1, $, $ # fee = done: c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Translacja instrukcji pętli pętla while Translacja instrukcji pętli pętla for High-Level Code MIPS High-Level Code int pow = 1; int x = ; while (pow!= 128) { pow = pow * 2; x = x+1; } MIPS # $s = pow, $s1 = x addi $s, $, 1 # pow = 1 addi $s1, $, # x = addi $t, $, 128 # t = 128 for comparison while: beq $s, $t, done # if pow == 128, exit while loop sll $s, $s, 1 # pow = pow * 2 addi $s1, $s1, 1 # x = x+1 j while done: int sum = ; for (i = ; i!= 1; i = i + 1) { sum = sum + i ; } // equivalent to the following while loop int sum = ; int i = ; while (i!= 1) { sum = sum + i; i = i+1; } # $s = i, $s1 = sum add $s1, $, $ # sum = addi $s, $, # i = addi $t, $, 1 # $t = 1 for: beq $s, $t, done # if i == 1, branch to done add $s1, $s1, $s # sum = sum + i addi $s, $s, 1 # increment i j for done: c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 6 / 11

16 Tablice tablica (ang. array) grupuje w pamięci dane tego samego typu adres bazowy (ang. base address): adres początkowego elementu tablicy indeks: numer elementu względem adresu bazowego rozmiar talicy (ang. size): liczba elementów tablicy przykład Address x171 x17c x178 x174 x17 Data array[4] array[3] array[2] array[1] array[] Tablice dostęp do elementów tablicy przykład program mnoży dwa elementy tablicy przez 8 rezultat zapisuje w tablicy przykład High-Level Code int array[5]; array[] = array[] * 8; array[1] = array[1] * 8; MIPS # $s = base address of array lui $s, x1 # $s = x1 ori $s, $s, x7 # $s = x17 lw $t1, ($s) # $t1 = array[] sll $t1, $t1, 3 # $t1 = $t1 << 3 = $t1 * 8 sw $t1, ($s) # array[] = $t1 Iw $t1, 4($s) # $t1 = array[1] sll $t1, $t1, 3 # $t1 = $t1 << 3 = $t1 * 8 sw $t1, 4($s) # array[1] = $t1 Main Memory c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Tryby adresowania Tablice dostęp do elementów tablicy 1 Wstęp pętla ułatwia dostęp do wszystkich elementów tablicy przykład: tablica 1-elementowa o adresie bazowym x23b8f High-Level Code int i; int array[1]; for (i = ; i < 1; i = i+1) array[i] = array[i] * 8; MIPS # $s = array base address, $s1 = i # initialization code lui $s, x23b8 # $s = x23b8 ori $s, $s, xf # $s = x23b8f addi $s1, $, # i = addi $t2, $, 1 # $t2 = 1 loop: slt $t, $s1, $t2 # i < 1? beq $t, $, done # if not, then done sll $t, $s1, 2 # $t = i*4 (byte offset) add $t, $t, $s # address of array[i] lw $t1, ($t) # $t1 = array[i] sll $t1, $t1, 3 # $t1 = array[i] * 8 sw $t1, ($t) # array[i] = array[i] * 8 addi $s1, $s1, 1 # i = i+1 j loop # repeat done: 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

17 Tryby adresowania Tryby adresowania Tryby adresowania Adresowanie względem PC MIPS: 5 trybów adresowania (ang. addressing modes) 3 tryby adresowania operandów: rejestrowe (ang. register-only addressing) natychmiastowe (ang. immediate addressing) bazowe (ang. base addressing) 2 tryby modyfikacji rejestru PC: względem PC (ang. PC-relative addressing) pseudo-bezpośrednie (ang. pseudo-direct addressing) wszystkie instrukcje typu R: tryb rejestrowy niektóre instrukcje typu I: tryb natychmiastowy instrukcje dostępu do pamięci: tryb bazowy adres efektywny jest sumą adresu bazowego i 16-bitowej stałej (offset) z pola imm rozkazu. adresowanie względem PC jest stosowane w instrukcjach rozgałęzień warunkowych, np. xa4 beq $t, $, else xa8 addi $v, $, 1 xac addi $sp, $sp, 8 xbo jr $ra xb4 else: addi $a, $a, 1 xb8 jal factorial w polu instrukcji jest 16-bitowa stała z znakiem, która po pomnożeniu przez 4, i po dodaniu do PC+4 jest adresem następnej instrukcji, gdy warunek rozgałęzienia jest spełniony (BTA ang. branch target address) beq $t, $, else Field Values op rs rt imm Machine Code op rs rt imm (x113) 6 bits 5 bits 5 bits 16 bits 6 bits 5 bits 5 bits 16 bits c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Tryby adresowania Adresowanie pseudo-bezpośrednie adresowanie bezpośrednie: adres powinien być w słowie instrukcji, ale jeśli adres jest 32-bitowy, a instrukcja 32-bitowa też, to brak miejsca adresowanie pseudo-bezpośrednie: w słowie instrukcji część adresu instrukcje skoku: j, jal reprezentacja instrukcji jal jal sum op x45c jal sum... x4a sum: add $v, $a, $a1 op Machine Code addr 3 x (xc128) 6 bits Field Values addr 26 bits 6 bits 26 bits adres docelowy (ang. jump target address) jest wyznaczany następująco: dwa najmłodsze bity zerowe (instrukcje na granicy słowa 4-bitowego) 26 bitów pobierane jest z pola addr najstarsze 4 bity to najstarsze bity wartości PC+4. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 1 Wstęp 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

18 Wywoływanie funkcji Argumenty funkcji i rezultat MIPS: do wywołania funkcji (ang. function call) używa się instrukcji jal (ang. jump and link), a do powrotu (ang. return) instrukcji jr (ang. jump register) instrukcja jal faddr nakazuje wykonanie dwóch operacji: zapamiętanie adresu następnej instrukcji w rejestrze $ra (numer rejestru: 31), (tj. adresu instrukcji położonej w pamięci tuż za jal) zapisanie w rejestrze PC adresu wywoływanej funkcji (faddr) przykład High-Level Code int main() { simple();... } // void means the function returns no value void simple() { return; } MIPS x42 main: jal simple # call function x x412 simple: jr $ra # return MIPS: do przekazywania argumentów do funkcji można użyć rejestrów $a-$a3 (do czterech argumentów) MIPS: wartość funkcji można zwracać poprzez rejestry $v-$v1 przykład (z uwagi na efekt uboczny wymaga poprawy) High-Level Code int main() { int y;... y = diffofsums(2, 3, 4, 5);... } int diffofsums(int f, int g, int h, int i) { int result; result = (f + g) (h + i); return result; } MIPS # $s = y main:... addi $a, $, 2 # argument = 2 addi $a1, $, 3 # argument 1 = 3 addi $a2, $, 4 # argument 2 = 4 addi $a3, $, 5 # argument 3 = 5 jal diffofsums # call function add $s, $v, $ # y = returned value... # $s = result diffofsums: add $t, $a, $a1 # $t = f+g add $t1, $a2, $a3 # $t1 = h+i sub $s, $t, $t1 # result = (f + g) (h + i) add $v, $s, $ # put return value in $v jr $ra # return to caller c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 7 / 11 Stos Organizacja funkcji stos: struktura danych w pamięci zorganizowana na zasadzie LIFO (ang. last-in-first-out) służy m.in. do przechowywania zmiennych lokalnych funkcji rejestr $sp: wskaźnik wierzchołka stosu (ang. stack pointer) stos Address Data 7FFFFFFC FFFFFF8 7FFFFFF4 7FFFFFF $sp funkcja może jedynie zwracać wartość wywołującemu, nie może powodować żadnych, niezamierzonych innych efektów ubocznych prawidłowa organizacja funkcji: 1 prolog funkcji: utworzenie miejsca na stosie do przechowania kopii rejestrów 2 prolog funkcji: zapisanie zawartości rejestrów na stosie 3 ciało funkcji: swobodnie korzysta z rejestrów procesora 4 epilog funkcji: przywracanie wartości rejestrów procesora korzystając z ich kopii przechowywanej na stosie 5 epilog: zwolnienie obszaru stosu wykorzystywanego przez funkcję. MIPS: przed odłożeniem danej na stos rejestr $sp jest dekrementowany (stos rośnie w kierunku adresów malejących). c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

19 Ramka stosu Przykładowa funkcja ramka stosu (ang. stack frame): przestrzeń na stosie zorganizowana przez funkcję (dla niej i tylko dla niej) tworzenie kopii rejestrów w ramce stosu stos a) przed wywołaniem funkcji b) w trakcie działania funkcji c) po wykonaniu epilogu funkcji Address Data Address Data Address Data (a) FC F8 F4 F? $sp stack frame (b) FC F8 F4 F? $s $t $t1 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 $sp (c) FC F8 F4 F? $sp MIPS # $s = result diffofsums: addi $sp, $sp, 12 # make space on stack to store three registers sw $s, 8($sp) # save $s on stack sw $t, 4($sp) # save $t on stack sw $t1, ($sp) # save $t1 on stack add $t, $a, $a1 # $t = f+g add $t1, $a2, $a3 # $t1 = h+i sub $s, $t, $t1 # result = (f + g) (h + i) add $v, $s, $ # put return value in $v lw $t1, ($sp) # restore $t1 from stack lw $t, 4($sp) # restore $t from stack lw $s, 8($sp) # restore $s from stack addi $sp, $sp, 12 # deallocate stack space jr $ra # return to caller c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Rejestry chronione Przykładowa funkcja (zgodna z konwencją ochrony MIPS) konwencja MIPS: rejestry chronione (ang. preserved): rejestry $s-$s7 wywołana funkcja (ang. callee) musi utworzyć lokalną kopię, a przed powrotem do programu wywołującego ją (ang. caller), ma przywrócić ich poprzednią zawartość rejestry niechronione (ang. nonpreserved): $t-$t9 wywołana funkcja nie tworzy ich kopii lokalnej Preserved Saved registers: $s $s7 Return address: $ra Stack pointer: $sp Stack above the stack pointer Nonpreserved Temporary registers: $t $t9 Argument registers: $a $a3 Return value registers: $v $v1 Stack below the stack pointer jeśli wywołujący funkcję przechowuje istotne dane w rejestrach niechronionych, to na niego spada obowiązek utworzenia ich kopii przed wywołaniem, a potem przywrócenia stanu. c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 MIPS # $s = result diffofsums addi $sp, $sp, 4 # make space on stack to store one register sw $s, ($sp) # save $s on stack add $t, $a, $a1 # $t = f+g add $t1, $a2, $a3 # $t1 = h+i sub $s, $t, $t1 # result = (f + g) (h + i) add $v, $s, $ # put return value in $v lw $s, ($sp) # restore $s from stack addi $sp, $sp, 4 # deallocate stack space jr $ra # return to caller c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

20 Rekursywne wywoływanie funkcji Stos podczas rekursji funkcja może wywoływać inną funkcję, w szczególności samą siebie (ang. recursive function call) wywołujący przed wywołaniem funkcji tworzy kopię rejestrów niechronionych ($t-$t9 oraz $a-$a3), których zawartość jest potrzebna do kontynuacji po powrocie z funkcji wywoływana funkcja tworzy lokalną kopię rejestrów chronionych ($s-$s7 oraz $ra), których zawartość zamierza zmieniać przykład: silnia High-Level Code int factorial(int n) { if (n <= 1) return 1; else return (n * factorial(n 1)); } MIPS x9 factorial: addi $sp, $sp, 8 # make room on stack x94 sw $a, 4($sp) # store $a x98 sw $ra, ($sp) # store $ra x9c addi $t, $, 2 # $t = 2 OxAO slt $t, $a, $t # n <= 1? xa4 beq $t, $, else # no: goto else xa8 addi $v, $, 1 # yes: return 1 OxAC addi $sp, $sp, 8 # restore $sp OxBO jr $ra # return xb4 addi $a, # n = n else: $a, 1 1 xb8 jal factorial # recursive call OxBC Iw $ra, ($sp) # restore $ra OxCO Iw $a, 4($sp) # restore $a xc4 addi $sp, $sp, 8 # restore $sp xc8 mul $v, $a, $v # n * factorial(n 1) OxCC jr $ra # return a) przed wywołaniem funkcji, b) po ostatnim wywołaniu (n = 3), c) po kolejnych powrotach Address Data (a) FC F8 F4 F EC E8 E4 E DC $sp Address Data (b) FC F8 $a (x3) F4 $ra F $a (x2) EC $ra (xbc) E8 $a (x1) E4 $ra (xbc) E DC $sp $sp $sp $sp Address Data FC F8 $a (x3) F4 $ra F $a (x2) EC $ra (xbc) E8 $a (x1) E4 $ra (xbc) E DC (c) $sp $v = 6 $a = 3 $sp $v = 3 x 2 $a = 2 $sp $v = 2 x 1 $a = 1 $sp $v = 1 x 1 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Dodatkowe argumenty i zmienne lokalne funkcji jeśli funkcja ma więcej niż 4 argumenty, to kolejne przekazywane są poprzez stos wywołujący, przed wywołaniem funkcji, na swoim stosie umieszcza dodatkowe argumenty dla funkcji (we własnej ramce) wywoływana funkcja umieszcza swoje zmienne lokalne w rejestrach chronionych $s-$s7, a kolejne na stosie stos a) przed wywołaniem funkcji b) po wywołaniu additional arguments $sp stack frame additional arguments $a $a3 (if needed) $ra (if needed) $s $s7 (if needed) local variables or arrays $sp 1 Wstęp 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura (a) (b) c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/216 8 / 11

21 Podział przestrzeni adresowej pamięci program po translacji należy załadować do pamięci i wskazać pierwszą z instrukcji maszynowych (ang. start executing) adres pamięci 32-bitowy: przestrzeń 4 GB MIPS: 4 segmenty pamięci segment kodu programu (ang. text segment) segment danych globalnych (ang. global data segment) segment danych dynamicznych (ang. dynamic data segment) segment zarezerwowany (ang. reserved segment): system operacyjny. Address xfffffffc x8 x7ffffffc x11 x1fffc x1 xffffffc x4 x3ffffc x Segment Reserved Stack Dynamic Data Heap Global Data Text Reserved $sp = x7ffffffc $gp = x18 PC = x4 typowe etapy przygotowania programu 1 kompilacja: translacja z języka wysokiego poziomu na język asemblera 2 asemblacja: translacja z języka asembler na język maszynowy 3 konsolidacja: łączenie modułów 4 ładowanie: umieszczenie kodu w pamięci uruchomienie programu polega na wpisaniu do PC adresu pierwszej instrukcji programu. High-Level Code Compiler Assembler Object File Linker Executable Loader Memory Object Files Library Files c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Przykład kompilacji Asemblacja High-Level Code int f, g, y; // global variables int main(void) { f = 2; g = 3; y = sum(f, g); return y; } int sum(int a, int b) { return (a + b); } MIPS.data f: g: y:.text main: addi $sp, $sp, 4 # make stack frame sw $ra, ($sp) # store $ra on stack addi $a, $, 2 # $a = 2 sw $a, f # f = 2 addi $a1, $, 3 # $a1 = 3 sw $a1, g # g = 3 jal sum # call sum function sw $v, y # y = sum(f, g) Iw $ra, ($sp) # restore $ra from stack addi $sp, $sp, 4 # restore stack pointer jr $ra # return to operating system sum: add $v, $a, $a1 # $v = a+b jr $ra # return to caller etap I przypisanie adresów do instrukcji x4 main: addi $sp, $sp, 4 x44 sw $ra, ($sp) x48 addi $a, $, 2 x4c sw $a, f x41 addi $a1, $, 3 x414 sw $a1, g x418 jal sum x41c sw $v, y x42 lw $ra, ($sp) x424 addi $sp, $sp, 4 x428 jr $ra x42c sum: add $v, $a, $a1 x43 jr $ra utworzenie tabeli symboli: nazwy zmiennych globalnych, etykiety Symbol f g Address x1 x14 etap II tworzenie kodu maszynowego zastępowanie symboli adresami z tabeli kod maszynowy wraz z tabelą symboli zapisywany do pliku typu object. y x18 main x4 sum x42c c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

22 onsolidacja Plik wykonywalny konsolidacja (ang. linking): łączenie modułów typu object w pojedynczy plik, zawierający kod maszynowy gotowy do wykonania przez procesor (ang. executable) konsolidator ma za zadanie dokonać relokacji danych i kodu maszynowego zawartego w plikach object, tak by wyeliminować nakładanie się adresów w tym celu korzysta z tablic symboli obecnych w plikach object plik gotowy do wykonania ma trzy sekcje: nagłówek (ang. executable file header) kod maszynowy programu (ang. text segment) segment danych globalnych (ang. data segment) Executable file header Text Size Data Size x34 (52 bytes) xc (12 bytes) Text segment Address Instruction x4 x23bdfffc x44 xafbf x48 x242 x4c xaf848 x41 x253 x414 xaf8584 x418 xc1b x41c xaf8288 x42 x8fbf x424 x23bd4 x428 x3e8 x42c x8512 x43 x3e8 addi $sp, $sp, 4 sw $ra, ($sp) addi $a, $, 2 sw $a, x8($gp) addi $a1, $, 3 sw $a1, x84($gp) jal x42c sw $v, x88($gp) lw $ra, ($sp) addi $sp, $sp, 4 jr $ra add $v, $a, $a1 jr $ra w sekcji segmentu danych są adresy danych globalnych dostęp do danych globalnych za pomocą adresowania bazowego względem rejestru $gp zawierającego wartość x18. Data segment Address x1 x14 x18 Data f g y c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 Ładowanie i wykonanie programu 1 Wstęp system operacyjny ładuje program do pamięci i uruchamia go 1 kod maszynowy, z sekcji text pliku wykonywalnego, umieszcza w segmencie text pamięci 2 zapisuje do rejestru $gp wartość x18 3 zapisuje do rejestru $sp wartość x7ffffffc 4 wykonuje instrukcję wywołującą funkcję: jal x4 ostatnia instrukcja funkcji main, tj. jr $ra, o kodzie x3e8, zwraca sterowanie do systemu operacyjnego, czyli do segmentu reserved. Address x7ffffffc x11 x1 x4 Memory Reserved Stack Heap y g f x3e8 x8512 x3e8 x23bd4 x8fbf xaf8288 xc1b xaf8584 x253 xaf848 x242 xafbf x23bdfffc Reserved $sp = x7ffffffc $gp = x18 PC = x4 2 Tryby adresowania 3 onstrukcja modelu programowego komputera Architektura ARM Architektury 64-bitowe 4 Literatura c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11 c Dr inż. Ignacy Pardyka (Inf U J ) AS: architektura Rok akad. 215/ / 11

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

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;

Bardziej szczegółowo

Lista Rozkazów: Język komputera

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

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

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.

Bardziej szczegółowo

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

. 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)

Bardziej szczegółowo

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek. Składowe architektury komputera

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

Bardziej szczegółowo

Architektura typu Single-Cycle

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ęć

Bardziej szczegółowo

Programowanie w asemblerze MIPSa

Programowanie w asemblerze MIPSa p. 1/28 Programowanie w asemblerze MIPSa (ciąg dalszy) 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

Bardziej szczegółowo

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 )

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

Bardziej szczegółowo

Struktura i działanie jednostki centralnej

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

Bardziej szczegółowo

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch

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

Bardziej szczegółowo

1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

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,

Bardziej szczegółowo

Architektura typu multi cycle

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

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

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 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).

Bardziej szczegółowo

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 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?

Bardziej szczegółowo

Podstawy programowania w języku C

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

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

Bardziej szczegółowo

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

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

Bardziej szczegółowo

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK.RD.01 Rok

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie 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ółowo

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

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

Bardziej szczegółowo

1 Zarys architektury MIPS

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.

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe ASSEMBLER Teodora Dimitrova-Grekow http://aragorn.pb.bialystok.pl/~teodora/ Program ogólny Rok akademicki 2011/12 Systemy liczbowe, budowa komputera, procesory X86, organizacja

Bardziej szczegółowo

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

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

Bardziej szczegółowo

Plan wykładu. Architektura systemów komputerowych. MnoŜenie realizacja sprzętowa (wersja 1) Układy mnoŝące liczby całkowite.

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

Bardziej szczegółowo

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Standardy reprezentacji wartości całkowitoliczbowych

Bardziej szczegółowo

Architektura komputerów

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

Bardziej szczegółowo

Programowanie Niskopoziomowe

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,

Bardziej szczegółowo

Programowanie Niskopoziomowe

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ółowo

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania Architektura Systemów Komputerowych Jednostka ALU Przestrzeń adresowa Tryby adresowania 1 Jednostka arytmetyczno- logiczna ALU ALU ang: Arythmetic Logic Unit Argument A Argument B A B Ci Bit przeniesienia

Bardziej szczegółowo

Projektowanie. Projektowanie mikroprocesorów

Projektowanie. Projektowanie mikroprocesorów WYKŁAD Projektowanie mikroprocesorów Projektowanie układ adów w cyfrowych - podsumowanie Algebra Boole a Bramki logiczne i przerzutniki Automat skończony System binarny i reprezentacja danych Synteza logiczna

Bardziej szczegółowo

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24

2 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.02 Rok akad. 2011/ / 24 ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe komputerów ASK MP.02 c Dr inż. Ignacy Pardyka 1 UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach 2 Literatura Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

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

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* 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

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Programowanie w elektronice: Podstawy C

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

Bardziej szczegółowo

Mikrokontroler ATmega32. Język symboliczny

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

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

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.

Bardziej szczegółowo

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232) 2011-07-04 Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232) Parametry transmisji : 9600, N, 8, 1 Sonda CS-26/RS-485 dołączona do interfejsu RS-485 pracuje poprawnie w trybie half-duplex.

Bardziej szczegółowo

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki Technika mikroprocesorowa Laboratorium 5 Operacje arytmetyczne Autor: Paweł Russek Tłumaczenie: Marcin Pietroń i Ernest Jamro http://www.fpga.agh.edu.pl/tm

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

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.

Bardziej szczegółowo

Python wstęp do programowania dla użytkowników WCSS

Python wstęp do programowania dla użytkowników WCSS Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE

PROGRAMOWANIE 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ółowo

002 Opcode Strony projektu:

002 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ółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

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 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ółowo

Podstawy Informatyki Języki programowania

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

Bardziej szczegółowo

Shellcody a architektura MIPS na systemach IRIX. Adam Zabrocki.

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)

Bardziej szczegółowo

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (http://www.cs.put.poznan.pl/mantczak/teaching/itc/masm.zip).

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (http://www.cs.put.poznan.pl/mantczak/teaching/itc/masm.zip). J.Nawrocki, M. Antczak, G. Palik, A. Widelska Plik źródłowy: 07cw4-asm.doc; Data: 2007-09-26 6:00 Ćwiczenie nr 4 Język asemblera Środowisko uruchomieniowe 1. Pobrać plik masm.zip (Macro Assembler 6.15

Bardziej szczegółowo

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

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.

Bardziej szczegółowo

Kod U2 Opracował: Andrzej Nowak

Kod U2 Opracował: Andrzej Nowak PODSTAWY TEORII UKŁADÓW CYFROWYCH Kod U2 Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz http://pl.wikipedia.org/ System zapisu liczb ze znakiem opisany w poprzednim

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

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

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.01 Rok akad. 2011/2012 2 / 27

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.01 Rok akad. 2011/2012 2 / 27 ARCHITEKTURA SYSTEÓW KOPUTEROWYCH strktry procesorów ASK SP. c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2/22 Założenia konstrkcyjne Układ pobierania instrkcji Układ przygotowania

Bardziej szczegółowo

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22

3 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.06 Rok akad. 2011/2012 2 / 22 ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH struktury procesorów ASK SP.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 Maszyny wirtualne 2 3 Literatura c Dr inż. Ignacy

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

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

Bardziej szczegółowo

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 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.

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Projekt prostego procesora

Projekt prostego procesora Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego

Bardziej szczegółowo

Przetwarzanie potokowe pipelining

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ń

Bardziej szczegółowo

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Spis 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ółowo

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 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

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

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)

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

Bardziej szczegółowo

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

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

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

Bardziej szczegółowo

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu.

Adresowanie. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu. W trybie natychmiastowym pole adresowe zawiera bezpośrednio operand czyli daną dla rozkazu. Wada: rozmiar argumentu ograniczony do rozmiaru pola adresowego Adresowanie bezpośrednie jest najbardziej podstawowym

Bardziej szczegółowo

Język ludzki kod maszynowy

Ję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ółowo

Rozszerzalne kody operacji (przykład)

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)

Bardziej szczegółowo

architektura komputerów w 1 1

architektura komputerów w 1 1 8051 Port P2 Port P3 Serial PORT Timers T0, T1 Interrupt Controler DPTR Register Program Counter Program Memory Port P0 Port P1 PSW ALU B Register SFR accumulator STRUCTURE OF 8051 architektura komputerów

Bardziej szczegółowo

Jerzy Nawrocki, Wprowadzenie do informatyki

Jerzy Nawrocki, Wprowadzenie do informatyki Magistrala systemowa Jerzy Nawrocki, Jerzy Nawrocki Wydział Informatyki Politechnika Poznańska jerzy.nawrocki@put.poznan.pl Cel wykładu Asembler i koncepcja von Neumanna Wprowadzenie do programowania na

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Procesor 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ę 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ółowo

Architektura komputerów

Architektura komputerów Wykład jest przygotowany dla IV semestru kierunku Elektronika i Telekomunikacja. Studia I stopnia Dr inż. Małgorzata Langer Architektura komputerów Prezentacja multimedialna współfinansowana przez Unię

Bardziej szczegółowo

organizacja procesora 8086

organizacja procesora 8086 Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala

Bardziej szczegółowo

Ćwiczenie nr 6. Programowanie mieszane

Ć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ółowo

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

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

Bardziej szczegółowo

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

Programowanie w asemblerze Linkowanie

Programowanie w asemblerze Linkowanie Programowanie w asemblerze Linkowanie January 17, 2017 Problem rozmieszczenia (relokacji) Ponieważ w pamięci równocześnie może znajdować się kilka programów, nie można w trakcie kompilacji przewidzieć

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

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.

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie 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ółowo

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

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

Bardziej szczegółowo

Procesory rodziny x86. Dariusz Chaberski

Procesory rodziny x86. Dariusz Chaberski Procesory rodziny x86 Dariusz Chaberski 8086 produkowany od 1978 magistrala adresowa - 20 bitów (1 MB) magistrala danych - 16 bitów wielkość instrukcji - od 1 do 6 bajtów częstotliwośc pracy od 5 MHz (IBM

Bardziej szczegółowo

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. 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ółowo

Część 4 życie programu

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ęść

Bardziej szczegółowo

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu Programowanie V Dariusz Skibicki Wydział Inżynierii Mechanicznej Uniwersytet Technologiczno-Przyrodniczy im. Jana i Jędrzeja Śniadeckich w Bydgoszczy dariusz.skibicki(at)utp.edu.pl Programowanie Projektowanie

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Prosty procesor dla framgentu listy rozkazów MIPSa

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

Bardziej szczegółowo

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

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

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

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

Bardziej szczegółowo

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

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,

Bardziej szczegółowo

Podstawy Techniki Mikroprocesorowej

Podstawy Techniki Mikroprocesorowej Podstawy Techniki Mikroprocesorowej Architektury mikroprocesorów Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.

Bardziej szczegółowo