Assembly. Iványi Péter



Hasonló dokumentumok
assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

Assembly Utasítások, programok. Iványi Péter

Előszó avagy Murphy és az optimizmus. Tartalomjegyzék

Assembly utasítások listája

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Digitális rendszerek. Utasításarchitektúra szintje

1. Az utasítás beolvasása a processzorba

A 32 bites x86-os architektúra regiszterei

Assembly Címzési módok. Iványi Péter

Adatelérés és memóriakezelés

Assembly. Iványi Péter

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Aritmetikai utasítások I.

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Bevezetés a számítástechnikába

assume CS:Code, DS:Data, SS:Stack Start: xor di, di mov si, 1 Torles int 10h mov dl, 40 xor bh, bh mov ah, 02h Kesleltet int 16h

A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.

Máté: Assembly programozás

code segment para public 'code' assume cs:code, ds:code, es:nothing, ss:nothing

A Számítógépek felépítése, mőködési módjai

Processzorok Utasításszintű Kezelése tavasz

Gyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Introduction to 8086 Assembly

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

Aritmetikai utasítások

Paraméter átadás regisztereken keresztül

2016/08/31 02:45 1/6 Hardver alapok

Megszakítások és kivételek

2017/12/16 21:33 1/7 Hardver alapok

Intel x86 utasításkészlet

A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.

Stack Vezérlés szerkezet Adat 2.

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

GÁBOR DÉNES FŐISKOLA PREZENTÁCIÓ. Vezetőtanár: Ágoston György 2002/ szemeszter. 222 lap

1. ábra: Perifériára való írás idődiagramja

A MiniRISC processzor

Vezérlésfolyam gráf és X86 utasításkészlet

Bevezetés az informatikába

GPU Lab. 3. fejezet. Az X86 Utasításkészlet. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Egyszerű RISC CPU tervezése

Assembly programozás levelező tagozat

Karunkról Kari digitális könyvtár

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Számítógép Architektúrák

Az integrált áramkörök kimenetének kialakítása

Számítógépek felépítése

Assebly feladatok SHR SHL NOT NEG AND XOR. Ezt követően ismertetni kell a szoftver megszakítás fogalmát és szükségességét.

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Kitlei Róbert kitlei.web.elte.hu. Karunkról Kari digitális könyvtár

DSP architektúrák dspic30f család

A számítógép alapfelépítése

Gábor Dénes Főiskola Győr. Mikroszámítógépek. Előadás vázlat. 2004/2005 tanév 4. szemeszter. Készítette: Markó Imre 2006

Intel x86 utasításkészlet + disassembler működése

Programozás alapjai. 10. előadás

A hibát az alábbi Python program segítségével tudjuk előidézni:

A mikroszámítógép felépítése.

ASSEMBLY PROGRAMOZÁS TANTÁRGYHOZ SZÜKSÉGES ELŐISMERETEK ISMÉTLÉSE

Máté: Számítógép architektúrák

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

HARDVERKÖZELI PROGRAMOZÁS1

Számítógépek felépítése, alapfogalmak

[1] Bevezetés. A "debug" a DOS-ból közvetlenûl indítható a "debug" szó begépelésével. Kilépés hasonlóképpen a "q" paranccsal történik.

Dr. Máté Eörs docens. Képfeldolgozás és Számítógépes Grafika Tanszék Árpád tér 2. II. em

Számítógép felépítése

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Máté: Számítógép architektúrák

Máté: Assembly programozás

Assembly Programozás Rodek Lajos Diós Gábor

Számítógép architektúrák

Architektúra, címzési módok

Máté: Számítógép architektúrák

Biztonságos programozás Puffer túlcsordulásos támadások

Máté: Számítógép architektúrák

II. KMAPR21TNB, KMAPR21ONB PC

Máté: Számítógép architektúrák

Jelfeldolgozás a közlekedésben

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

ARM Cortex magú mikrovezérlők

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Programok működése dióhéjban

Máté: Számítógép architektúrák

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

Számítógépek felépítése, alapfogalmak

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Architektúra, cache. Mirıl lesz szó? Mi a probléma? Teljesítmény. Cache elve. Megoldás. Egy rövid idıintervallum alatt a memóriahivatkozások a teljes

Máté: Számítógép architektúrák

8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Assembly programozás levelező tagozat

Az interrupt Benesóczky Zoltán 2004

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

ELŐSZÓTJ "Előszó" \l

Irvine eljárások. ClrScr - Törli a képernyő tartalmát és a kurzort a képernyő bal felső sarkába helyezi (Clear Screen).

Átírás:

Assembly Iványi Péter

További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe

További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter mov ah, 62h int 21h mov ds, bx mov si, 80h mov cl, [si] inc si rep movsb... parameter resb 256

További Op. rsz. funkcionalitások File létrehozása FCB módszer HANDLE segítségével mov ah, 3ch mov cx, attributum mov dx, file_neve ; végén nulla,ds:dx int 21h Eredmény: AX = HANDLE, ezzel lehet rá hivatkozni Carry flag = 1, akkor hiba volt

További Op. rsz. funkcionalitások Attribútum: CX 00h 01h 02h 04h 08h 10h Attribútum Normál Csak-olvasható (read-only) Rejtett (hidden) Rendszer (system) Archive Könyvtár (directory)

További Op. rsz. funkcionalitások File megnyitása mov ah, 3dh mov al, mode mov dx, file_neve ; végén nulla,ds:dx int 21h Eredmény: AX = HANDLE, ezzel lehet rá hivatkozni Carry flag = 1, akkor hiba volt

További Op. rsz. funkcionalitások Mód: AL 0 1 2 Mód Csak olvasás Csak írás Írás és olvasás

További Op. rsz. funkcionalitások File lezárása mov ah, 3eh mov bx, handle int 21h

További Op. rsz. funkcionalitások File olvasás mov ah, 3fh mov bx, handle mov cx, mennyit_olvasson mov dx, ide_olvas ; DS:DX int 21h Eredmény: AX = ennyi byte-ot olvasott Ha Carry flag = 1, akkor hiba volt

További Op. rsz. funkcionalitások File írása mov ah, 40h mov bx, handle mov cx, mennyit_írjon mov dx, innen_írjon ; DS:DX int 21h Eredmény: Ha CX=0 akkor a file végéhez fűz hozzá

További Op. rsz. funkcionalitások AX=4800h BX=kérendő memória mérete paragrafusban INT 21h Eredmény AX=a lefoglalt memória címe Ha Carry flag=1 akkor hiba volt

További Op. rsz. funkcionalitások AX=4900h ES=foglalás során az AX regiszterben megkapott cím INT 21h

Példa mov ax, 4800h ; memória foglalás mov bx, 4096 ; 64 Kbyte hely int 21h mov bp, ax mov es, bp... mov ax, 4900h ; memória felszabadítás mov es,bp int 21h mov ax, 4c00h int 21h

Optimalizálás

Optimalizálás Premature optimization is the root of the evil Csak akkor és ott optimalizáljunk ahol számít Végezzünk méréseket

80486 mikroprocesszor Busz Fetch 1 Fetch 2 Fetch 3 Fetch 4 Tárol 1 Fetch 5 Fetch 6 Dekód 1 Dekód 2 Dekód 3 Dekód 4 Vár Dekód 5 Dekódoló egység Futtat 1 Futtat 2 Futtat 3 Futtat 4 Vár Végrahajtó egység Címzés 1 Vár Vár Címzés 2 Címző egység pipelining

Address generation interlock (AGI) Memória cím kiszámítása egy órajel ciklust igényel A pipeline-ban általában külön lépés/fázis, addig számoljuk míg az előző utasítást végrehajtjuk DE Ha a címzés függ az előző utasítástól akkor egy extra órajelciklust várni kell

Példa ADD EBX, 4 MOV EAX, [EBX] Elkerülés módja: Utasítást rakunk közéjük ADD EBX, 4 NOP MOV EAX, [EBX] AGI Picit más utasításokat használunk MOV EAX, [EBX+4] ADD EBX, 4

AGI A stack pointer(sp)-en keresztül is előfordulhat AGI Például: PUSH, POP, CALL, RET esetén ha előtte MOV, ADD, SUB műveletet használtunk az SP-vel ADD ESP,4 POP ; AGI várakozás MOV ESP, EBP RET ; AGI várakozás

PPro, PII, PIII AGI Nincs AGI memória olvasásra Memória írás esetén még mindig van, de nem túl jelentős

Utasítás párosítás A Pentium processzornak két végrehajtó egysége van Egy órajel ciklus alatt két utasítást lehet végrehajtani Nem párosíthatók az utasítások Ha az utasítások nem párosíthatóak A két utasítás között regiszter függőség van Az utasítások nincsennek a utasítás cache-ben

Nem párosítható utasítások Bit léptetés vagy bit forgatás ha a CL regisztert használjuk A komplex matematikai műveletek: MUL, DIV Kiterjesztett utasítások: RET, ENTER, PUSHA, REP STOS Bizonyos mat coprocesszor műveletek: FSCALE, FLDCW Szegmensek közötti utasítások: PUSH szegmens, CALL far cím

Párosítható utasítások Legtöbb ALU utasítás: ADD, INC, XOR Összehasonlító utasítások: CMP, TEST Regisztereket használó PUSH és POP

Regiszter függőség Az első utasítás frissíti a regisztert amit a második utasítás használ MOV EAX, 8 MOV [EBP], EAX Mindkét utasítás ugyanabba a regiszterbe ír MOV EAX, 8 MOV EAX, [EBP]

Regiszter függőség, de párosítható Az első utasítás olvas a regiszterből a második ír, az párosítható: MOV EAX, EBX MOV EBX, [EBP]

32 bites regiszterek A 32 bites utasítások végrehajtása gyorsabb mint a 16 bites utasításoké Az EAX regiszter használata egy byte-al rövidebb utasítást eredményez DS használata ES helyett szintén gyorsabb

Egyéb optimalizálás Kerüljük a felesleges utasításokat: SUB AX, CX CMP AX, 0 JZ címke ; beállítja a státuszt ; ez is beállítja a státuszt

Egyéb optimalizálás A rövidebb op kód általában gyorsabb végrehajtást is jelent Nem mindig igaz A kevesebb utasítás gyorsabb végrehajtást jelent Nem mindig igaz

Egyéb optimalizálás Eredeti MOV AX, 0 SHL AX, 1 Optimalizált XOR AX, AX ADD AX, AX

Egyéb optimalizálás Használjunk biteltolást szorzásra MUL helyett SHL Használhatjuk a LEA utasítást is LEA CX, [DX+DX*4] ; CX = DX * 5

Egyéb optimalizálás Kerüljük a komplex utasításokat LOOP, ENTER, LEAVE Például LOOP utasítás helyett DEC CX JNZ ciklus Így bármely regiszter használható Gyorsabb

Egyéb optimalizálás Használjuk a TEST utasítást az AND helyett annak ellenőrzésére hogy az érték zérus-e Nem pazaroljuk az időt, hogy eltároljuk az eredményt

Egyéb optimalizálás Bizonyos utasítások esetén ha az AX vagy EAX regisztert használjuk akkor rövidebb lesz a gépi kód add ecx,4000 81 C1 4000 add eax,4000 05 4000

Egyéb optimalizálás Kerüljük, hogy a regiszterekbe folyamatosan adatot töltsünk, ha egyszer betöltöttük az adatot, akkor őrizzük meg

Egyéb optimalizálás LODSx, MOVSx, STOSx utasítások gyorsabbak 386 processzoron mint a 486-os processzoron