uvod u GNU asembler, asemblersko programiranje Flashcards

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
Q

Aritmeticke i logicke operacije?

A

-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
Q

Kodovi uslova?

A

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
Q

Kada se postavljaju kodovi/flegovi uslova?

A

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
Q

Operacija movzx?

A

Postavlja u gornjoj polovini registra sve 000, a u donjoj vrednost koju prebacujemo

29
Q

Operacija cmovX dest, src?

A

Prebacivanje se vrsi samo ako je uslov X ispunjen

30
Q

Stek?

A

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
Q

Poziv i povratak iz potprograma?

A

call labela -> stavljamo povratnu adresu na stek i skacemo na labelu

ret ->skidamo adresu sa steka i skok na adresu

32
Q

Ulazni parametri i povratna vrednost?

A

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
Q

Okvir na steku?

A

Sadrzi: povratnu adresu, lokalne promenljive, privremene prom

-na pocetak pokazuje registar rbp

34
Q

Tekuci okvir ima?

A

Argumente
7+
____________________
povratna vrednost
___________________
stari rbp <- novi rbp
_______________
sacuvani reg+
lokalne vrednosti

35
Q

Koje registre cuva pozivalac, a koje pozvani potprogram?

A

Pozivalac cuva rax,rdi,…r9, r10 i r11

Pozvani potprogram cuva rbx,r12,r13,r14,rbp,rsp

36
Q

Direktiva .extern simb?

A

Kazemo da je simbol definisan u nekom drugom fajlu/modulu, al se ovde koristi

37
Q

Programski skokovi?

A

jX oblika, skok u kodu u zavisnosti od kodniv uslova/flegova