Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy...

15
Pr ´ ace s registry a s pamˇ et´ ı Ing. Dominika Reg ´ eciov ´ a yzkumn ´ a skupina form ´ aln´ ıch model ˚ u Vysok ´ e uˇ cen´ ı technick ´ e v Brnˇ e, Fakulta informaˇ cn´ ıch technologi´ ı Boˇ zetˇ echova 1/2, 612 66 Brno - Kr ´ alovo Pole iregeciova@fit.vutbr.cz

Transcript of Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy...

Page 1: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Prace s registry a s pametı

Ing. Dominika RegeciovaVyzkumna skupina formalnıch modelu

Vysoke ucenı technicke v Brne, Fakulta informacnıch technologiıBozetechova 1/2, 612 66 Brno - Kralovo Pole

[email protected]

Page 2: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Prıklad na zacatek

• Preved’te cıslo (1FD)16 do binarnı soustavy

• Preved’te cıslo (00111000)2 do osmickove soustavy

ISU 2018/2019, 3. cvicenı 2 / 15

Page 3: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Prıklad na zacatek

• Preved’te cıslo (1FD)16 do binarnı soustavy• (0001 1111 1101)2

• Preved’te cıslo (0011 1000)2 do osmickove soustavy• (070)8

ISU 2018/2019, 3. cvicenı 3 / 15

Page 4: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Opakovanı: Registry

• Datove• EAX - aritmeticke operace, vstup/vystup• EBX - adresovanı• ECX - cıtac v cyklech• EDX - vstup/vystup, aritmeticke operace mul, div

• Ukazatele• EIP - instruction pointer, ukazatel na nasledujıcı instrukci• ESP - offset v ramci programoveho zasobnıku• EBP - pomaha pri referencovanı promennych predavanych

do subrutiny• Indexove

• ESI - zdrojovy index pro operaci s retezci• EDI - cılovy index pro operace s retezci

• Segmentove• Jejich obsah nemenıme, ukladajı segmentovou cast adresy• CS (Code Segment), SS (Stack Segment), DS (Data

Segment), ES (Extra Segment)

ISU 2018/2019, 3. cvicenı 4 / 15

Page 5: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Opakovanı: Registry II

ISU 2018/2019, 3. cvicenı 5 / 15

Page 6: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

(E)FLAGS

• Registr obsahuje 32 bitu (indikatoru), ktere procesornastavuje podle vysledku prave provedene operace aumoznuje tak vetvit program

• Kazda instrukce muze nastavovat ruzny pocet prıznaku,treba i zadny

• K registru nelze pristoupit jako k celku, ale lze pristoupit kjeho jednotlivym bitum (flagum)

• Nektere bity jsou rezervovane a nelze je menit

ISU 2018/2019, 3. cvicenı 6 / 15

Page 7: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Prıznaky

ISU 2018/2019, 3. cvicenı 7 / 15

Page 8: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Poznamky

• Registry EAX , ECX , EDX lze pouzıvat libovolne a nenıpotreba jejich hodnotu na konci funkce obnovovat

• Registry EBX , ESI, EDI lze pouzıvat libovolne, na konci funkceje potreba jejich hodnotu obnovit. Tyto registry mohou bytvyuzıvany pro lokalnı promenne.

• Registry ESP, EBP jsou pouzıvany pro praci se zasobnıkemdle popsaneho postupu

• V registru FLAGS je potreba vzdy na konci funkce zajistit,aby hodnota bytu DF byla nastavena vzdy na hodnotu 0

ISU 2018/2019, 3. cvicenı 8 / 15

Page 9: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Prıznaky: prıklad

%include ”rw32−2018. inc ”section . datasection . textmain :

push ebpmov ebp, esp

mov AL , 125inc ALinc ALinc ALinc ALinc ALinc ALinc AL

pop ebpret

ISU 2018/2019, 3. cvicenı 9 / 15

Page 10: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Sekce programu

ISU 2018/2019, 3. cvicenı 10 / 15

Page 11: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Deklarace promennych

• V .bss sektoru, promenne nejsou inicializovane

• byte buffer resb 64• rezervuje 64 slabik (byte = 8 bitu)

• word buffer resw 1• rezervuje 1 slovo (word = 2 bajty = 16 bitu)

• double buffer resd 2• rezervuje 2 dvojslova (double word = 4 bajty = 32 bitu)

• quad buffer resq 3• rezervuje 3 quad word (quad word = 8 bajtu = 64 bitu)

ISU 2018/2019, 3. cvicenı 11 / 15

Page 12: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Inicializace promennych

• V .data sektoru, vsechny konstanty jsou lokalnı

• Existuje klıcove slovo global, ktere je zverejnı

• Zkratky define byte | word | double word | quad word

• var byte db 10• definuje promennou o velikosti 8 bitu a hodnote 10

• var char array db ’Ahoj’, 0• retezec

• var dw array dw 100, 150, 200• definice polı, hodnoty oddelujeme carkami

ISU 2018/2019, 3. cvicenı 12 / 15

Page 13: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Ulozenı cısla v pameti

ISU 2018/2019, 3. cvicenı 13 / 15

Page 14: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Adresovanı pameti

• 32 bitovem rezim→ vsechny adresy budou mıt vzdy 32 bitu• Pamet’ lze indexovat pomocı:

• Prıme adresy (konkretnı pevna adresa)• Neprıme adresy (registry)• Ukazatele pres bazovy registr• Ukazatel v indexu registru

• Budeme pouzıvat hranate zavorky pro ctenı/zapis s daneadresy

ISU 2018/2019, 3. cvicenı 14 / 15

Page 15: Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy index pro operaci s´ ˇretezci EDI - c´ılov ´y index pro operace s ˇret ezciˇ

Adresovanı pameti: prıklad

ISU 2018/2019, 3. cvicenı 15 / 15