Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prevodjenje intel asemblera

[es] :: Asembler :: Prevodjenje intel asemblera

[ Pregleda: 1431 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

XDarko

Član broj: 345806
Poruke: 13
87.116.165.*



Profil

icon Prevodjenje intel asemblera21.10.2021. u 11:19 - pre 29 meseci
Zravo svima, imam sledeci asemblerski kod u intelovoj sintaksi.

Kada ga prevedem sa as asemblerom dobijam tipa a.out fajl koji kad poikusam da izvrsim na ubuntu sa ./a.out dobijam "persmission denied".
A kada mu promenim mode sa chmod +x a.out, prilikom ./a.out dobijam "Exec format error"...

Moje pitanje je dakle sledece: Kako da pravilno prevedm i izvrsim ovaj prosti asemblerksi kod? Hvala na odgovoru.

.
Code:
       .intel_syntax noprefix

    .data

fmt:    .asciz "Hello, world!\n"

    .text

    .global main

main:
    enter 0, 0

    lea rdi, fmt
    call printf

    leave

    ret
 
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 11:46 - pre 29 meseci
Nevezano za kod, da li si dao execution permission fajlu kada si probao da ga startujes na Ubuntu...

Ah, vec si pokusao, probaj
chmod 777 ......
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 15:12 - pre 29 meseci
chmod +x već radi dodvanje execute privilegije na fajl.
Nego, Darko, kako si kompajlirao i linkovao tvoj kod?
Šta ti vraća komanda:
file a.out

Meni liči da si samo kompajlirao, a nisi linkovao, nego si object kod nazvao a.out.
 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.183.*



Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 17:17 - pre 29 meseci
Dakle kada ga prevedem sa as dobijam a.out fajl , a file a.out komanda ispisuje a.out: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
, sto meni nista ne znaci jer pojma nemam sa formatima objektnih fajlova. Kao sto rekoh prilikom chmod +x a.out i pokretanja dobijem sledece [bash: ./a.out: cannot execute binary file: Exec format error

Interesantno kada promenim ime funkcije iz 'main' u 'hekler' recimo, i pokusavam da prevedem sa gcc-om onda mi izbacuje linkersku gresku jer je nerazresena referenca na main funkciju...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 17:39 - pre 29 meseci
Opet nisi odgovorio na pitanje:

Kako si preveo program?
Navedi KOMANDU kojom si kompajlirao i linkovao program.
Inače, ELF: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
Primer šta meni daje "file" za izvršni fajl:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.183.*



Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 18:05 - pre 29 meseci
Jesam nego nisi pazljivo citao.

Preveo sam ga sa "as" komandom tj sa programom odnosno sa gnu asemblerom. i kad ga prevedem dobijem a.out fajl, a kada ukucam komandu "file a.out" dobijem a.out: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped kao sto sam i napiso u prethodnoj poruci.

Sto se linkovanja tice pojma nemam sta treba i da li treba i kako treba nesto dodatno tu uraditi, inicijalno sam pretpostavio da ce kada pozovem gnu asembler nad datim kodom on obaviti prevodjenje do objektnog fajla i onda samoinicijativno uraditi i likovanje...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 18:13 - pre 29 meseci
DAJ CELU LINIJU KOJOM SI PREVEO ASM FAJL.
Zaboga, pomozi mi da ti pomognem!
Na primer:

as file.s -o file.out
ld file.out -e main -o file
./file
 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.183.*



Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 18:18 - pre 29 meseci
Haahh, prosto ovako:

as hello.s, kao izlaz dobijem difoltni a.out fajl i to je to.

A linker nigde nisam koristio.
 
Odgovor na temu

sdurut
Mašinski šloser

Član broj: 76787
Poruke: 673



+66 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 18:20 - pre 29 meseci
Asembler pravi samo OBJ tj objektni fajl. Obično se dodaje strartup kod kod koji inicijalizuje Stack pointer.
Mora da se pokrene linker da linkuje sve bibilioteke koje si koristio i napravi ELF izvršni fajl.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera21.10.2021. u 18:20 - pre 29 meseci
A što nisi linkovao?
Koristi "-o" opciju da ne bi dobio defaultni a.out.
Koristi linker.
Probaj ove komande koje sam ti ja dao, samo upotrebi prava imena fajlova.
 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.176.*



Profil

icon Re: Prevodjenje intel asemblera24.10.2021. u 18:30 - pre 29 meseci
Ne znam kako da koristim linker tj, kako da linkujem da bibliotekom koja mi je potrebna.

Okej objektni fajl se ne zove vise a.out, stavio sam as -o hello.out hello.s, ali ne znam kako da linkujem...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera24.10.2021. u 19:00 - pre 29 meseci
ld hello.out -e main -o hello -lc

Možda ne treba -lc, ali printf je funkcija koja se nalazi u standardnoj biblioteci libc.so

A da probaš samo

make hello

 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.176.*



Profil

icon Re: Prevodjenje intel asemblera24.10.2021. u 22:47 - pre 29 meseci
Hvala na odgovorima.

A da li postoji neka automatizacija tipa da linker sam zakljuci koja od biblioteka mu je potrebna pa da linkuje ili to mora manualno da se uradi?
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: Prevodjenje intel asemblera24.10.2021. u 22:51 - pre 29 meseci
Obično standardna biblioteka ne mora da se posebno navodi (libc, -lc)
Ostale biblioteke moraju da se navode.

Zaboga, probaj:
make hello

make zna da od .s treba da napravi .o fajl, a da od .o fajla napravi izvršni fajl. Zna da treba da linkuje .o fajl sa standardnom bibliotekom.
 
Odgovor na temu

XDarko

Član broj: 345806
Poruke: 13
87.116.176.*



Profil

icon Re: Prevodjenje intel asemblera24.10.2021. u 22:56 - pre 29 meseci
Zahvaljujem.
 
Odgovor na temu

[es] :: Asembler :: Prevodjenje intel asemblera

[ Pregleda: 1431 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.