uvod u GNU asembler, asemblersko programiranje Flashcards

(37 cards)

1
Q

Direktiva .align expr?

A

Ova direktiva radi poravnanje , ubacice od 0 do expr bajtova kako bi uradila poravnanje, expr mora biti stepen dvojke

.byte 0x55
.align 4 (dodacemo 3 0x00)
.long 0xAA55EE11

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Direktiva .ascii “string” ?

A

Ubacuje string bez nul karaktera

.ascii “JNZ” (0x41 0x4E 0x5A)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Direktiva .asciz “string”?

A

Ubacuje string sa null karakterom

.asciz “JNZ” (0x41 0x4E 0x5A 0x00)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Direktiva .byte “izraz”?

A

Ubacuje najt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Direktiva .data?

A

Sekcija u kojoj se nalaze promenljivi podaci

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Direktiva .text?

A

Sekcija u kojoj se nalazi izvrsni kod

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Direktiva .rodata?

A

Nalaze se konstance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Direktiva .bss?

A

Nalaze se neinicijalizovani staticki podaci

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Direktiva .end?

A

Kaze da se ovde zavrsava asemblerski kod, sve posle ove direktive smatramo da ne postoji

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Diretiva .equ simbol,izraz?

A

Dodeljuje vrednosti kao i diretiva .set ili =

.equ var, (5*8)-2
<=>
.set var, 0x2A
<=>
var = 0x2A

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Direktiva .global?

A

Kazuje da je ovaj simbol globalam i da se koristi u drugim modulima

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Direktiva .word ili .2byte?

A

Ubacujemo 16obitnu rec, 2 bajta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Direktiva .include “fajl”?

A

Ubacuje sadrzaj fajla na mesto ove direktive

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Direktiva .skip izraz?

A

Korismo za deklarisanje neinicijalizovanih promenljivi, tj. kao da vrsimo rezervaciju prostora za nju

buffer: .skip 512 (bafer je velicine 512 bajtova)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Direktiva .long ili .4byte?

A

Ubacuje 32bitnu rec

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Direktiva .quad ili .8byte?

A

Ubacuje 64obitnu rec

17
Q

Apsolutne i relativne vrednosti?

A

-apsolutne vrednosti: ne zavise od svog polozaja u izvrsnom kodu

primer: numericka konstanta

-relativne vrednosti: izvrsavaju se u odnosu na neku adresu, koriste samo + i i koriste se za sracunavanje pomeraja

Pravilo mesanja:
rel + apso = rel
apso + rel = rel
rel - aspo = rel
rel - rel = apso

18
Q

Stanje arhitekture vidljivo programeru?

A

-PC = adresa sledece instrukcije
-reg banka = registri
-kodovi uslova =status info o poslednjoj aritmeticko logickoj operaciji
-memorija = kod i podaci (.text, .data, .bss) i stek

19
Q

Kako bi se ovo napisalo na asembleru:
chart c = ‘0’;
short s = 1;
int i = 2;
long l = 3l;
void *p = &1;
float f =5.0f;
double d = 6.0;
chart str[] = “Niz znakova”;

A

c: .byte ‘0’
.align 2 (poravnanje kako bi short poceo
s: .word 1 tamo gde treba)
.align 4
i: .long 2
.align 8
l: .quad 3
.align 8
p: .quad 1
.align 4
f: .long 5.0
.align 8
d: .quad 6.0
.align 8
str: .string “Niz znakova”

20
Q

Komanda za predstavljanje neinicijalizovanih podataka?

A

primer:
short s;
chart str[10];

asembler: .comm s,2,2 [simbol,broj_bajtova,uravnanje]
chart str,10,8

21
Q

x86 arhitektuja je tipa little_endian , sta to znaci?

A

Znaci da na najnizu adresu ide bajt najmanje tezine

22
Q

Bitni registri za nas su?

A

rip - koji predstavlja pc kounter
esp - stek pointer
ebp -bejz pointer
eax - akumulator

23
Q

Transfer podataka, operacija mov?

A

mov ne moze da radi prebacivanje iz memorije u memoriju, to nije dozvoljena kombinacija

izvoriste: mem, reg, imm
odrediste: mem ,reg

mov odrediste,izvoriste

ako je odrediste memorija mozemo dodati specifikaciju koliki je taj podatak na primer

mov QWORD PTR[rax], -147

24
Q

Instrukcija za racunanje adresa lea?

A

lea dest, sors
-samo izracunava adresu podatka, ali mu ne pristupa

25
Aritmeticke i logicke operacije?
-ne prave razliku izmedju oznacenih i neoznacenih brojeva -add ->sabiranje -sub ->oduzimanje -imul ->mnozenje -shl/sal ->siftovanje u levo -sar/shr ->siftovanjeu desno -xor ->ekskluzivno ili -and -> i logicko -or -> ili logicko -inc -dec -neg ->negacija oznacenih brojeva -not ->bitski komplement
26
Kodovi uslova?
To su flegovi pswa -CF=1 ako radimo sa neoznaceim brojevima imamo prenos/pozajmice -ZF=1 ako je rezultat nula -SF=1 ako radimo sa oznacenim brojevima, rez je negativan broj -OF=1 ako radimo sa oznacenim brojevima, prekoracenje (a,b>0, (a+b)<0) ili (a,b<0 , (a+b)>0)
27
Kada se postavljaju kodovi/flegovi uslova?
Kada radimo sa aritmetickim operacijama, ne racunajuci lea instrukciju i instrukcije poredjenja : cmp br1, br2 ->radi oduzimanje brojeva i postavlja flegoe, tako da znamo rezultat poredjenja ovih brojeva test br1,br2 -> takodje radi poredjenje jedino sto radi bitsko & brojeva, postavlja samo SF i ZF set instrukcijom, menja samo jedan bit ne celo reg psw: sete -ZF(==0), setne -~ZF(!=0), sets-SF(negativan broj), setns- ~SF(nenegativan broj), setg(veci), setge (>=), setl(<), setle(<=), seta, setb,...
28
Operacija movzx?
Postavlja u gornjoj polovini registra sve 000, a u donjoj vrednost koju prebacujemo
29
Operacija cmovX dest, src?
Prebacivanje se vrsi samo ako je uslov X ispunjen
30
Stek?
lifo princip rada, push src - umanjujemo rsp za 8 i upisujemo operand na datu adresu pop des - citamo vrednost sa adrese rsp, uvecavamo rsp za 8 Stek raste prema nizim adresama
31
Poziv i povratak iz potprograma?
call labela -> stavljamo povratnu adresu na stek i skacemo na labelu ret ->skidamo adresu sa steka i skok na adresu
32
Ulazni parametri i povratna vrednost?
prvih 6 parametara ide na rdi,rsi,rdx,rsx,r8,r9 , ako imamo vise od 6 param koristimo stek povratna vrednost ide u rax
33
Okvir na steku?
Sadrzi: povratnu adresu, lokalne promenljive, privremene prom -na pocetak pokazuje registar rbp
34
Tekuci okvir ima?
Argumente 7+ ____________________ povratna vrednost ___________________ stari rbp <- novi rbp _______________ sacuvani reg+ lokalne vrednosti
35
Koje registre cuva pozivalac, a koje pozvani potprogram?
Pozivalac cuva rax,rdi,...r9, r10 i r11 Pozvani potprogram cuva rbx,r12,r13,r14,rbp,rsp
36
Direktiva .extern simb?
Kazemo da je simbol definisan u nekom drugom fajlu/modulu, al se ovde koristi
37
Programski skokovi?
jX oblika, skok u kodu u zavisnosti od kodniv uslova/flegova