Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy...
Transcript of Práce s registry a s pametíiregeciova/isu2019/documents/... · 2019. 2. 19. · ESI - zdrojovy...
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
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
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
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
Opakovanı: Registry II
ISU 2018/2019, 3. cvicenı 5 / 15
(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
Prıznaky
ISU 2018/2019, 3. cvicenı 7 / 15
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
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
Sekce programu
ISU 2018/2019, 3. cvicenı 10 / 15
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
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
Ulozenı cısla v pameti
ISU 2018/2019, 3. cvicenı 13 / 15
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
Adresovanı pameti: prıklad
ISU 2018/2019, 3. cvicenı 15 / 15