1 / 8

Asembler x86-64

Asembler x86-64. Autori : Vukasin Jelic Bojan Nestorovic. UVOD.

noe
Télécharger la présentation

Asembler x86-64

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Asembler x86-64 Autori: VukasinJelic BojanNestorovic

  2. UVOD • Kako je mašinski jezik jedinijezikkojiprocesorrazume, svesto je izraženoasemblerskimjezikommorabitiprevedenonajeziknadbinarnomazbukom. Ovoprevodenjeobavljaračunarprekoprogramaprevodiocakoji se nazivaasembler. • Zakoriscenje x86-64 asembleranijepotrebnopoznavanje x86 asemblera, alipoznavanjeistogolaksavarazumevanjei prevodenjekoda. • Sinonim za 64bitno proširenje Intel-ovog i AMD-ovog32bitnog asemblera je x86-64. AMD je predstavioprvuverzijux64 koja se u pocetku zvala x86-64, a kasnije je preimenovana u AMD64. Intel je njihovuimplementacijunazvao IA-32e (eng. Intel Itanium architecture), a kasnije EMT64.

  3. OPIS REGISTARA • RAX (accumulator register) – se koristizaaritmetičkeoperacije, ulazno-izlazneoperacije, pozivanjeprekidaitd. • RBX (base register) – se koristikaopokazivačzapristupmemoriji. • RCX (counter register) – se koristikaobrojačpetlji I zašiftovanje • RDX(data register) – se koristiistokao RAX • RDI(destination register) – se koristizaindeksiranjenizova I pristupmemoriji. • RSI(source index register) – se koristiistokao RDI • RSP(stack pointer) – pokazujenaposlednji element gurnutnastek, kojiinače ide kanižimadresama. Stekkoristimozasmeštanjeadresapotprograma, zaprosledjivanjeparametara u višimjezicimakaostosu C/C++. • RBP(base pointer) – sadrži adresupočetkasteka • RIP(instruction pointer)- pokazujenasledeću instrukcijukojutrebaizvršiti. Može samo da se čita. • RFLAGS – smešta flegovekojekoristimo,zarezultatenekihoperacija I kontroluprocesora.

  4. KONVENCIJA POZIVA • Konvencija YASM asemblera je preuzeta od visegprogramskogjezika • C, kojanamomogucavapozivanjespoljnihfunkcijadenisanihtokom • izvrsavanjakaosto je funkcijaprintf. • Stekrastekanizimadresama, stoznaci da se novi element dodaje • nadno, a starijielementi se nalazenavisimadresama. • Funkcijekojenisu void vracajurezultatprekoregistra RAX. Osim toga, • funkcija resetuje RSP registar i vraca ga na pocetak stek okvira, i izbacuje • staru vrednost RBPa sa steka. • movrax , /return value / • movrsp , rbp • pop rbp • ret

  5. POKRETANJE PROGRAMA • Kompajliranjesmovršilipomoću YASM kompajleraI to nasledeći način: • yasm-f elf64 ime.asm & ld -o imeime.o • Ili ako smo koristili eksterne c funkcije • yasm-f elf64 ime.asm & clang -o imeime.o

  6. TEST PRIMERI Program kojinastandardniizlazispisuje Hello World koristeći sistemskepozive. Program kojinastandardniizlazispisuje Hello World koristeći ekserne C funckije. Program kojinastandardniizlazispisuje Hello World koristeći sistemskepozive, alidužinustringadobijamokoristeći SCASB funckije.

  7. TEST PRIMERI (NASTAVAK) Program kojiračunazbirdvabroja. Program kojiračunavrednostfaktorijalazazadatibroj, rekurzijom. Program kojiračunakolikobitova u brojuimavrednostjedankoristecipomeranjebitova.

  8. HVALA NA PAŽNJI

More Related