Architektura komputerów



Podobne dokumenty
Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów

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

Załącznik do ćwiczenia w środowisku MASM32 wersji 10 Sterowanie przebiegiem wykonania programu

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

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

Struktura i działanie jednostki centralnej

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Architektura Systemów Komputerowych

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Lista instrukcji procesora 8051 część 2 Skoki i wywołania podprogramów, operacje na stosie, operacje bitowe

Technika mikroprocesorowa I Wykład 2

Metody Realizacji Języków Programowania

Lista instrukcji mikroprocesora Programowanie w assemblerze

Lista rozkazów mikrokontrolera 8051

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Programowanie Niskopoziomowe

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Ćwiczenie 3. Konwersja liczb binarnych

Architektura typu Single-Cycle

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Programowanie Niskopoziomowe

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Programowanie niskopoziomowe

Mikrokontroler ATmega32. Język symboliczny

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

Sprzęt i architektura komputerów

Sterowanie pracą programu

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

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

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]

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Sprzęt i architektura komputerów

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

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

Programowanie w asemblerze Architektura procesora

Architektura systemów komputerowych Laboratorium 7 Symulator SMS32 Stos, Tablice, Procedury

Zuzanna Hartleb i Artur Angiel

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

Architektura Systemów Komputerowych, Wydział Informatyki, ZUT

Programowanie mikrokontrolerów (CISC)

Programowanie komputera

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

1. Operacje logiczne A B A OR B

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Przykładowe pytania DSP 1

Podstawy Informatyki

Lista Rozkazów: Język komputera

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

Organizacja typowego mikroprocesora

Programowanie mikrokontrolera 8051

Architektura komputerów

1. Pobrać plik masm.zip (Macro Assembler 6.15 & Segmented Executable Linker 5.60) (

Mikrokontroler ATmega32. Tryby adresowania Rejestry funkcyjne

Kurs Zaawansowany S7. Spis treści. Dzień 1

Programowanie Niskopoziomowe

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

Architektura komputerów

Kod hex Instrukcja Opis 37 AAA Koryguj AL po dodawaniu BCD

Podstawy techniki cyfrowej Mikroprocesory. Mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Notatka Aplikacyjna NA 03006PL Maj 2016

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

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

architektura komputerów w 1 1

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

Podstawy programowania w języku C i C++

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

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

PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy

Elementy oprogramowania sterowników. Instrukcje podstawowe, funkcje logiczne, układy czasowe i liczenia, znaczniki

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

Systemy wbudowane. Przykłady kodu Assembler

Architektura komputerów

AGH Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Zapis liczb binarnych ze znakiem

Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

Programowalne układy logiczne

Mikrooperacje. Mikrooperacje arytmetyczne

Kod U2 Opracował: Andrzej Nowak

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

2. Architektura mikrokontrolerów PIC16F8x... 13

Ćwiczenie nr 6. Programowanie mieszane

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

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Jerzy Nawrocki, Wprowadzenie do informatyki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Adam Kotynia, Łukasz Kowalczyk

Kurs SIMATIC S7-300/400 i TIA Portal - Podstawowy. Spis treści. Dzień 1. I System SIEMENS SIMATIC S7 - wprowadzenie (wersja 1503)

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

Kurs Podstawowy S7. Spis treści. Dzień 1

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Pracownia elektryczno-elektroniczna klasa IV

Transkrypt:

Architektura komputerów Wykład 8 Jan Kazimirski 1

Assembler x86 2

Podstawowe instrukcje x86 Instrukcje transferu danych Arytmetyka binarna i dziesiętna Instrukcje logiczne Instrukcje sterujące wykonaniem programu Operacje blokowe Inne 3

Instrukcje transferu danych Prześlij dane - MOV Realizuje przesłania: rejestr-rejestr, rejestrpamięć, pamięć-rejestr, oraz załadowanie danej natychmiastowej do rejestru Prześlij dane warunkowo Zbiór instrukcji realizujących przesłanie jeżeli spełniony jest warunek Przykład: CMOVC przenieś jeśli nastąpiło przeniesienie

Instrukcje transferu danych Zamień zawartość operandów - XCHG Zamienia miejscami zawartości rejestrów lub rejestru i pamięci Porównaj i zamień - CMPXCHG Może być stosowana jako atomowa instrukcja typu test and set (z przedrostkiem LOCK)

Instrukcje transferu danych Umieść operand na stosie PUSH. Umieszcza na stosie operand rejestr, daną z pamięci lub natychmiastową. Zdejmij ze stosu POP. Zdejmuje wartość ze stosu i umieszcza ją w rejestrze lub pamięci. Umieszczanie lub zdejmowanie ze stosu zawartości wszystkich rejestrów instrukcje PUSHA i POPA.

Instrukcje transferu danych Instrukcje konwersji Dokonują konwersji rozszerzającej bajt->słowo, słowo->podwójne słowo itd. Prawidłowo obsługują liczby ujemne (kod U2) Przykład: CWD konwertuj słowo na podwójne słowo

Arytmetyka binarna Dodawanie i odejmowanie ADD dodaj operand źródłowy do docelowego ADC dodaj z przeniesieniem INC zwiększ o jeden wartość operandu SUB odejmij operand źródłowy od docelowego SBB odejmij z przeniesieniem DEC zmniejsz o jeden wartość operandu

Arytmetyka binarna Porównanie i negacja CMP porównaj operandy i ustaw flagi. NEG zmień znak operandu na przeciwny. Mnożenie MUL mnożenie liczb bez znaku. IMUL mnożenie liczb ze znakiem. Używa akumulatora.

Arytmetyka binarna Dzielenie DIV dzielenie liczb bez znaku IDIV dzielenie liczb ze znakiem Zwraca osobno wynik dzielenia i resztę z dzielenia Dzielenie przez zero powoduje wygenerowanie wyjątku

Arytmetyka dziesiętna Arytmetyka na liczbach zapisanych w kodzie BCD. Wykonywana za pomocą instrukcji operacji binarnych połączonych z dodatkowymi instrukcjami konwertującymi dane między reprezentacją binarną a kodem BCD.

Instrukcje logiczne Operatory logiczne AND, OR, XOR Dopuszczalne kombinacje operandów: rejestr - rejestr, rejestr - pamięć, rejestr - dana natychmiastowa, pamięć dana natychmiastowa Negacja logiczna NOT Operandem może być rejestr lub pamięć

Przesunięcia i rotacje Przesunięcia bitowe SHR przesunięcie logiczne w prawo SHL przesunięcie logiczne w lewo Rotacje bitowe ROR rotacja w prawo ROL rotacja w lewo

Operacje na bitach Zestaw instrukcji operujących na poszczególnych bitach danych Ustawianie poszczególnych bitów Zerowanie poszczególnych bitów Wyszukiwanie ustawionego bitu Warunkowe ustawianie bitów Testowanie poszczególnych bitów

Instrukcje sterujące wykonaniem programu Instrukcja skoku bezwarunkowego JMP Przenosi sterowanie do nowej pozycji w pamięci Operandem może być dana natychmiastowa, rejestr lub adres w pamięci Adres skoku może być względny (wyliczany na podstawie aktualnej pozycji) lub bezwzględny.

Instrukcje sterujące wykonaniem programu Wywołanie procedury CALL Tzw. skok ze śladem - instrukcja skoku z zachowaniem na stosie adresu następnej instrukcji Sposoby wywołania są takie same jak JMP Powrót z procedury RET Instrukcja pobiera adres ze stosu (umieszczony tam przez CALL) i wykonuje skok do tego adresu.

Instrukcje sterujące wykonaniem programu Skoki warunkowe Zestaw instrukcji odpowiadających instrukcji JMP ale realizujących skok tylko w przypadku spełnionego warunku. Przykłady: JE skocz jeśli równe JNE skocz jeśli nierówne JZ skocz jeśli zero

Instrukcje sterujące wykonaniem programu Instrukcja pętli LOOP Pozwala zrealizować pętlę sterowaną zawartością rejestru ECX. Instrukcja sprawdza zawartość ECX i jeżeli jest on większy od zera to zmniejsza go o 1 i wykonuje skok do podanego adresu.

Operacje blokowe Zestaw instrukcji pozwalających na operacje na blokach danych. Podstawowe operacje: MOVS kopiuj blok danych CMPS porównaj blok danych SCAS szukaj w bloku danych LODS wczytaj blok danych STOS zapisz blok danych

Operacje blokowe Wersje dla różnych rozmiarów danych, np. dla MOVS MOVSB (operuje na bajtach), MOVSW (operuje na słowach) itd. Korzystają z rejestrów ESI i EDI do adresowania adresów źródłowego i docelowego (z automatyczną inkrementacją/dekrementacją) Flaga DF określa kierunek (zwiększanie lub zmniejszanie adresów).

Operacje blokowe Dodatkowe przedrostki pozwalają powtarzać operację określoną liczbę razy REP powtarzaj dopóki ECX <> 0 REPE, REPZ, REPNE, REPNZ powtarzaj dopóki ECX <> 0 i spełniony warunek. Wersje REP z dodatkowym warunkiem zakończenia stosowane są do operacji CMPS i SCAS.

Inne Manipulowanie bitami rejestru znaczników Ustawianie lub zerowanie poszczególnych flag rejestru znaczników (bity przeniesienia i kierunku pętli) Przykłady: STC ustaw bit przeniesienia CLC zeruj bit przeniesienia CMC neguj bit przeniesienia STD ustaw bit kierunku...

Inne Manipulowanie rejestrem znaczników Nie wszystkie flagi rejestru znaczników można modyfikować za pomocą osobnych instrukcji Flagi niedostępne bezpośrednio można modyfikować za pośrednictwem akumulatora i instrukcji LAHF (ładuje flagi do AH) i SAHF (ustawia flagi na podstawie AH) Flagami można też manipulować za pomocą stosu i instrukcji PUSF i POPF.

Inne Wsparcie dla procedur języków wysokiego poziomu: ENTER, LEAVE ENTER tworzy tzw. ramkę stosu rezerwując na stosie miejsce dla lokalnych zmiennych funkcji. Wywoływana przy wywołaniu funkcji LEAVE likwiduje ramkę stosu utworzoną wcześniej przez ENTER. Wywoływana przy wyjściu z funkcji (return).

Inne LEA Załadowanie adresu efektywnego Pozwala załadować adres operandu do rejestru Wykorzystywana do wskazywania operandów przy operacjach blokowych NOP Operacja pusta Nie robi nic poza zwiększeniem wartości licznika instrukcji

Inne Instrukcje wejścia wyjścia: IN pobierz daną z portu we/wy OUT wyślij daną do portu we/wy INSB/INSW/INSD pobranie blokowe (z REP) OUTSB/OUTSW/OUTSD wysłanie blokowe (z REP)

Inne Obsługa przerwań programowych INT wywołanie przerwania o określonym numerze IRET powrót z przerwania Przerwanie nr 3 (pułapka debuggera) ma specjalny 1-bajtowy rozkaz pozwala to wstawić pułapkę zamiast dowolnej instrukcji.

Anatomia programu Program assemblera składa się z sekcji (segmentów). Model ten jest pozostałością po segmentowym modelu pamięci. Podstawowe sekcje:.text segment kodu.data segment danych.bss segment danych zmiennych 28

Anatomia programu c.d. Segment.text Kod programu (wykonywane instrukcje) Status: wykonywalny, tylko do odczytu Segment.data Zainicjalizowane dane programu Status: niewykonywalny Segment.bss Niezainicjalizowane dane programu Status: niewykonywalny 29

Anatomia programu c.d. Punkt startowy programu symbol _start Dyrektywa assemblera global eksportuje symbol dla programu łączącego (linkera). global _start Etykieta _start wskazuje na pierwszą wykonywaną instrukcję programu 30

Dygresja analiza pliku.o Polecenie file podstawowe informacje o pliku. Przykład: file ex01.o ex01.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped Informacja o formacie pliku obiektowego (binarnego) Plik zawiera tablicę symboli Tablicę symboli można usunąć (po konsolidacji!) poleceniem strip 31

Polecenie objdump Polecenie objdump pozwala na dokładną analizę pliku obiektowego (binarnego) Duża liczba opcji przydatne opcje: -t wyświetla tablicę symboli -d dokonuje deasemblacji kodu programu (tłumaczenia z kodu maszynowego na rozkazy asemblera) 32

Polecenie objdump c.d. objdump -t ex01.o ex01.o: file format elf64-x86-64 SYMBOL TABLE: 0000000000000000 l df *ABS* 0000000000000000 ex01.asm 0000000000000000 l d.data 0000000000000000.data 0000000000000000 l d.text 0000000000000000.text 0000000000000000 l.data 0000000000000000 msg 0000000000000000 g.text 0000000000000000 _start 33

Polecenie objdump c.d. objdump -d ex01.o ex01.o: file format elf64-x86-64 Disassembly of section.text: 0000000000000000 <_start>: 0: b8 04 00 00 00 mov $0x4,%eax 5: bb 01 00 00 00 mov $0x1,%ebx a: b9 00 00 00 00 mov $0x0,%ecx f: ba 0e 00 00 00 mov $0xe,%edx 14: cd 80 int $0x80 16: b8 01 00 00 00 mov $0x1,%eax 1b: bb 05 00 00 00 mov $0x5,%ebx 20: cd 80 int $0x80 34

Podsumowanie Podstawowe instrukcje asemblera x86 Anatomia programu napisanego w assemblerze x86 Analiza pliku obiektowego (binarnego).o 35