Jazyk symbolických adres



Podobné dokumenty
Registry 8*32bit ERn (=16*16bit En+Rn, 8*16bit+16*8bit En+RnH+RnL)

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

Procesor z pohledu programátora

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

8. Laboratoř: Aritmetika a řídicí struktury programu

ISU Cvičení 3. Marta Čudová

Adresní mody procesoru

Assembler - 5.část. poslední změna této stránky: Zpět

ISU Cvičení 7. Marta Čudová

09. Memory management. ZOS 2006, L.Pešička

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Struktura programu v době běhu

a operačních systémů

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Struktura a architektura počítačů (BI-SAP) 7

Operační systémy. Cvičení 3: Programování v C pod Unixem

Strojový kód. Instrukce počítače

3. Počítačové systémy

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Algoritmizace a programování

Přidělování paměti II Mgr. Josef Horálek

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Architektury počítačů a procesorů

MPASM a IDE pro vývoj aplikací MCU (Microchip)

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Provádění instrukcí. procesorem. Základní model

Kubatova Y36SAP 8. Strojový kód Jazyk symbolických instrukcí asembler JSA pro ADOP a AVR Kubátová Y36SAP-strojový kód 1

Programovací jazyk Pascal

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Systém adresace paměti

Pohled do nitra mikroprocesoru Josef Horálek

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

přetížení operátorů (o)

Počítač jako prostředek řízení. Struktura a organizace počítače

ČÁST 1. Základy 32bitového programování ve Windows

Úvod do programování. Lekce 1

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

OPS Paralelní systémy, seznam pojmů, klasifikace

Maturitní otázky z předmětu PROGRAMOVÁNÍ

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

5. STRUKTURA PLC PROGRAMU

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Opakování programování

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Sada 1 - Základy programování

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Popis programu EnicomD

int ii char [16] double dd název adresa / proměnná N = nevyužito xxx xxx xxx N xxx xxx N xxx N

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Programování v jazyce C a C++

Struktura a architektura počítačů (BI-SAP) 9

Operační systémy. Přednáška 8: Správa paměti II

11. Přehled prog. jazyků

Procesor. Základní prvky procesoru Instrukční sada Metody zvýšení výkonu procesoru

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Profilová část maturitní zkoušky 2014/2015

Princip funkce počítače

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

24. Jazyk PLC836 - referenční slovník

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Úvod. Programovací paradigmata

Přednáška 2. Systémy souborů OS UNIX. Nástroje pro práci se souborovým systémem. Úvod do Operačních Systémů Přednáška 2

Číselné soustavy. Binární číselná soustava

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

.include "m32def.inc" // Konstanty.equ N = 5 // Počet prvků v poli.equ PRVNI = 3 // První číslo v poli

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

konstruktory a destruktory (o)

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIII Paměti konstant

LOGICKÉ ŘÍZENÍ. Matematický základ logického řízení

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Ing. Igor Kopetschke TUL, NTI

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

2 Datové typy v jazyce C

Paměti a jejich organizace

Management procesu I Mgr. Josef Horálek

DATABÁZE MS ACCESS 2010

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Programování ve Windows Dynamické knihovny. Andrea Číková Martin Osovský

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

TÉMATICKÝ OKRUH Softwarové inženýrství

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Transkript:

Jazyk symbolických adres 1 Proč programovat v JSA Pro některé procesory resp. MCU jsou překladače JSA dostupnější. Některé překladače vyšších jazyků neumí využít určité speciální vlastnosti procesoru. Možnost vytvořit optimalizovaný kód (?). Cvičné důvody programátor se musí důkladně seznámit s daným procesorem. 2

Strojový kód Program přeložený do binární podoby. Obsahuje binární kódy instrukcí, Obsahuje absolutní adresy operandů. Jediná forma programu, kterou umí procesor přímo zpracovat. Velmi obtížné úpravy programu. Obtížně srozumitelná pro programátora. 3 Obtížné změny ve strojovém kódu... 002000... 00200D 6A 08 34 10 6A 00 34 11 08 08 6A 88 34 12 MOV.B @3410,R0L MOV.B @3411,R0H ADD.B R0H,R0L MOV.B R0L, @3412... 002000... 00200D 6A 08 34 10 6A 00 34 12 08 08 6A 88 34 13 MOV.B @3410,R0L MOV.B @3412,R0H ADD.B R0H,R0L MOV.B R0L, @3413 003410 003411 003412 003413 xx yy zz 003410 003411 003412 003413 xx AA yy zz Vložená proměnná 4

Symbolická adresa (1) Symbolická adresa nahrazuje ve zdrojovém kódu skutečnou (absolutní) adresu. Převod symbolická adresa absolutní adresa provede překladač + sestavovací program. Programátor nemusí znát skutečné umístění proměnné v paměti. Překlad + sestavení Zdrojový kód Strojový kód VAR1: VAR2: RES1: 37 MOV.B @VAR1,R0L 81 MOV.B @VAR2,R0H B8 ADD.B R0H,R0L MOV.B R0L, @RES1 003410 003411 003412 37 6A 08 34 10 81 6A 00 34 11 08 08 B8 6A 88 34 12 5 Symbolická adresa (2) Symbolická adresa má Hodnotu odpovídá adrese, kterou reprezentuje. Obsah odpovídá obsahu paměťového místa (bytu, slova, ) na kterou odkazuje. Typ relativní nebo absolutní. Př: VAR3: VAR4: LAB1: 0F D3 31 B8 003410 003411 003412... 0206C9 Symbolická adresa VAR3 VAR4 LAB1 Hodnota 003410 003412 0206C9 Obsah 0FD3 31 B8 6

Symbolická adresa (3) Symbolická adresa může být Absolutní hodnota je známa při překladu, tj. může ji určit přímo asembler (překladač). hodnotu určí linker (sestavovací program) při sestavování programu. Výrazy se symbolickými adresami 1. operand 2. operand Operace Výsledek Absolutní Absolutní ± Absolutní Absolutní ± + Absolutní* * uvnitř jednoho segmentu 7 Symbolická adresa (4) Použití symbolické adresy Návěští cílová adresa skoku nebo volání procedury. Proměnná adresa pro manipulaci s daty. JMP. MOV.W MOV.L @LAB1 @VAR3,R1 #VAR4,ER2 8

Překlad a sestavení programu Program je sestaven z jednoho nebo více modulů. Moduly se překládají samostatně. Přeložené (relativní) moduly se spojí sestavovacím programem do výsledného souboru. Zdrojový modul Překlad modul Zdrojový modul Překlad... modul Sestavení (linker) Spustitelný program (binární soubor) Zdrojový modul Překlad modul Knihovní modul 9 a absolutní adresy V relativních modulech jsou adresy počítány od začátku modulu. V sestaveném programu jsou adresy počítány od začátku paměti. Modul A Modul B Modul C Modul A Modul B Adresování v relativních modulech Modul C Adresování v sestaveném programu 10

Zápis programu Program se zapisuje do 4 sloupců. Některá pole se mohou podle situace vynechat. Každářádka obsahuje jednu instrukci, direktivu nebo rozvinutí makra. Návěští definuje symbolickou adresu. Operace symbolický název instrukce nebo direktivy. Operandy operandy instrukce nebo parametry direktivy. Komentář je oddělen středníkem. LAB01: MOV.W @VAR01,R1 ; presun dat NOP ; nedela nic Začátek řádky Návěští (symbolická adresa) Operace Operandy Komentář 11 Instrukční soubor Instrukce lze podle funkce rozdělit do několika skupin: přesuny dat, aritmetické operace, logické operace, posuvy a rotace, bitové operace, nepodmíněné a podmíněné skoky, řídicí instrukce. 12

Instrukční soubor H8S (1) 13 Instrukční soubor H8S (2) 14

Příklad: Instrukce MOV.W (1) 15 Příklad: Instrukce MOV.W (2) 16

Důležité direktivy Direktivy (povely pro překladač): definice sekcí (segmentů), definice dat a symbolů, makra, podmíněný překlad, další: strukturovaný překlad, listing,. 17 Struktura modulu Modul obsahuje jednu nebo více sekcí (segmentů). Každá sekce má nezávislé adresování od svého začátku. Pořadí sekcí ve zdrojovém souboru není podstatné upraví se při sestavení. Kódová sekce Kódová sekce Datová sekce Kódová sekce Datová sekce Zásobníková sekce Modul 18

Základní typy sekcí (GNU as as) Datová sekce Obsahuje inicializovaná data ( proměnné ) programu. Kódová sekce Obsahuje kód programu. Další sekce Neinicializovaná data, zásobník, přerušovací vektory, další uživatelem (programátorem) definované sekce. 19 Definice sekce Hlavička sekce (zjednodušeně) Standardní sekce GNU as a ld:.data [subsekce].text [subsekce] začátek datové sekce začátek kódové sekce Libovolné další sekce:.section jméno začátek sekce jméno.text 0 kód programu.data 3 data (proměnné).section MOJE_SEKCE 20

Počítadlo adres Každá sekce má (při překladu) samostatné počítadlo adres (PLC Programm Location Counter) Není-li určeno jinak, inicializuje se PLC na 0 na začátku sekce. Možnosti nastavení PLC:.org výraz.align uložení.org = nastaví PLC na hodnotu výraz.align = nastaví PLC na hodnotu MOD(2^uložení) Všechny adresy jsou vztaženy k začátku sekce. Je-li sekce relativní, musí se jiným způsobem zabezpečit potřebné umístění sekce v paměti..text MOV JMP.org JMP.align 4 JMP @VAR1,R1 @LAB1 0x000400 @LAB2 LAB3 21 Sestavení sekcí a modulů Sestavovací program spojí stejné sekce dohromady. Jsou-li definovány subsekce, spojí dohromady i stejné subsekce.text 0.text 0.text 0.text 1 Modul A Modul B Modul C text 0 text 0.section ST.text 1.data 1.data 1.data 0.section ST.text 1.text 2.text 0.text 1.text 2.data 0.data 1.data 1.section ST.section ST Sestavený program 22

Definice dat a symbolů Definice a přiřazení hodnoty symbolu.equ symbol,výraz symbol = výraz symbol symbol, kterému bude přiřazena hodnota výrazu. výraz jeho hodnota bude přiřazena symbolu..equ a = pouze definují symbol a jeho hodnotu. Nevyhrazují místo v paměti. Platnost symbolu je omezena na modul ve kterém je symbol definován. Hodnotu symbolu nelze změnit..equ.equ.equ BASE,0x008000 LIMIT,0x100 NEXT,BASE+LIMIT NIC = 0 23 Definice dat (1) Definice místa pro proměnnou [návěští].space položky návěští symbolická adresa, položky - výrazy definující počet položek VAR1:.space 4.space 1.space 1.space 1 VAR2:.space 4 VAR1: 003410 Vyhradí v paměti místo určené délky (počtu bytů). Je-li uvedeno návěští, odpovídá jeho hodnota adrese 1. bytu dat. VAR2: 003417 24

Definice proměnné s počáteční hodnotou [návěští].byte výrazy [návěští].word výrazy [návěští].long výrazy [návěští].ascii řetězec [návěští].asciz řetězec návěští symbolická adresa, výrazy výrazy definující obsah jednotlivých položek, oddělené čárkou. Vyhradí v paměti místo, jehož obsah je dán jednotlivými výrazy. Je-li uvedeno návěští, odpovídá jeho hodnota adresa 1. bytu dat. Definice dat (2) VAR1:.word 0x0FD3 VAR2:.byte 1 VAR3:.byte 0,32,19,68 VAR4:.word 0x1200+0xB8 VAR5:.ascii AHOJ VAR1: 0F 003410 D3 VAR2: 31 003412 VAR3: 00 003413 20 VAR4: 13 44 12 B8 VAR5: 41 48 4F 4A 003417 003419 25 Sdílení dat mezi moduly (1) Symboly mají platnost jen v modulu, ve kterém jsou definovány. Rozšíření platnosti (export) symbolů:.global symboly symboly seznam exportovaných symbolů oddělených čárkami. Použití symbolů definovaných v jiném modulu (import):.extern symboly symboly seznam importovaných symbolů oddělených čárkami. Lze použít pouze pro symboly, definované jako návěští (ne EQU). 26

Sdílení dat mezi moduly (2) ; A_MODUL VAR_A1:.word.global VAR_A1,LAB_A1.extern VAR_B1,LAB_B1 VAR_A2:.space 2 LAB_A1: MOV.W MOV.W JMP 0x0FD3 @VAR_A2,R1 R1,@VAR_B1 @LAB_B1 ; B_MODUL.global VAR_B1,LAB_B1.extern VAR_A1,LAB_A1 VAR_B1:.word 0x0FD3 VAR_B2:.space 2 LAB_B1: MOV.W @VAR_B2,R1 MOV.W R1,@VAR_A1 JMP @LAB_A1 27 Sdílení dat mezi moduly (3) moduly obsahují tabulku referovaných externích symbolů (Extern) a tabulku exportovaných symbolů (Global). Sestavovací program hledá externí symboly v tabulkách Global ostatních modulů. modul A modul B modul C Kód a data Kód a data Kód a data Tabulka referovaných externalů ( Extern) Tabulka exportovaných symbolů ( Global) Tabulka referovaných externalů ( Extern) Tabulka exportovaných symbolů ( Global) Tabulka referovaných externalů ( Extern) Tabulka exportovaných symbolů ( Global) 28

Makra (definice) Umožňuje definovat část programu, která bude použita na více místech..macro jméno argumenty tělo makra.endm jméno jméno makra. argumenty seznam symbolických argumentů. V těle se referují s \ na začátku. tělo makra jednotlivé instrukce..endm ukončuje rozvoj makra. Rozvinutí makra vloží tělo makra, tj. kopie jednotlivých instrukcí do daného místa programu. 29 Makra (rozvinutí).macro PUSH MOV.W POP.endm SWAP SWAP SWAP REG1,REG2 \REG1 \REG2,\REG1 \REG2 R4,R2 R5,R3 PUSH MOV.W POP PUSH MOV.W POP R4 R2,R4 R2 R5 R3,R5 R3 Zápis v programu Rozvinutí makra 30

Makra (lokální symboly) Je-li v makru definován symbol (např. návěští), vznikají při vícenásobném rozvinutí problémy. Symbol se musí definovat jako lokální v makru. LOCAL symboly symboly seznam lokálních symbolů, oddělených čárkami. Překladač vytvoří v každém rozvinutí unikátní jméno symbolu. Před použitím LOCAL se musí použít direktiva.altmacro 31 Makra (lokální symboly).altmacro.macro ONES VAR,RESULT VAR1:.space 2 LOCAL LAB1,LAB2 VAR2:.space 1 MOV.W @\VAR,R1 VARX:.space 2 MOV.B #16,R0L VARY:.space 1 XOR.B R0H,R0H LAB1: ROTR R1 ONES VAR1,VAR2 BCC LAB2 INC R0H ONES VARX,VARY LAB2: DEC R0L BNE LAB1 MOV.B R0H,@\RESULT.endm.noaltmacro Použití makra Definice makra 32

Spojování programů v JSA a vyšších jazycích Typický případ: procedura v JSA volaná z programu ve vyšším jazyku (např. C). Je nutné znát: pravidla pro vytváření jmen (proměnných, segmentů, ), pravidla pro předávání argumentů do procedury, pravidla pro předávání hodnoty funkce do volajícího programu, pravidla pro zacházení se zásobníkem, pravidla pro sestavení programu ve vyšším jazyku (inicializační modul, knihovny, ). Výše uvedené bývá popsáno v příslušném manuálu. 33 Start procesoru (1) Reset 1. V paměti musí být připraven program. První instrukce programu musí být na určité pevně dané adrese (obvykle 0x000). Paměť musí být nevolatilní (ROM). 2. Po připojení napájení se provede RESET. 3. Při resetu nastaví CPU do PC hodnotu 0x000 (nebo jinou pevně danou hodnotu). PC První instrukce Kód programu Volná paměť Kód programu Volná paměť Nevolatilní paměť (Flash, EPROM, ) 34

Start procesoru (2) Adresa první instrukce na adrese Jiná možnost (použitá i u H8S): Reset 200ABC 1. Po připojení napájení se provede RESET. PC Volná paměť 2. V paměti musí být připraven program. Adresa první instrukce programu musí být na určité pevně dané adrese (obvykle 0x000). První instrukce Kód programu Paměť musí být nevolatilní (ROM). 3. Při resetu nastaví CPU do PC obsah adresy 0x000. Volná paměť Nevolatilní paměť (Flash, EPROM, ) 35 Operační systém Aplikační program Operační systém První instrukce SYSCALL Spuštění aplikace Volání služeb OS Start aplikace Služba O.S. EXIT Ukončení aplikace 36

Správa paměti Začátek segmentu Adresa paměti Fyzická (absolutní) adresa Aplikační program Instrukce PC Operační systém Délka segmentu Komparátor CPU v režimu UŽIVATEL Start aplikace SYSCALL Porušení ochrany paměti CPU v režimu SYSTÉM 37 Správa paměti 38