matka5432 Temat założony przez niniejszego użytkownika |
Kompilacja assemblera pod linuxem » 2012-12-29 14:04:36 Witajcie, tym razem mam problem z kompilacja assemblera. Po wpisaniu komendy (tak jak jest napisane w kursie): nasm -f elf hello.asm <--- nasm: fatal: unable to open input file `hello.asm' ld -o hello hello.o <--- ld: cannot find hello.o: No such file or directory (chcialem sprawdzic czy sie cos zmieni jestli recznie stworze plik hello.o, efekt jest tki sam, czyli nie moze znalezc tego pliku ) Mozliwe, ze poprostu nie mam nasma.. Niby sciagnalem go z http://sourceforge.net/projects/nasmx/files/latest/download?source=recommended stronki, ale w folderze sa tylko inne katalogi i pliki z rozszerzeniem txt, sh, inc, bat. Jednym slowem nie ma zadnego programu. Nigdy mi nie wychodzila kompilacja z asmem i glownie dlatego z tego rezygnowalem, ale teraz pomyslalem, ze skoro mam linuxa, moze to pojsc jakos lepiej. |
|
m4tx |
» 2012-12-29 14:06:42 unable to open input file `hello.asm' |
Prawdopodobnie nie masz pliku hello.asm w folderze, w którym obecnie jesteś (aktualny folder możesz sprawdzić za pomocą komendy pwd ). |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2012-12-29 14:17:33 teraz mam nastepujace informacje w terminalu: hello.asm:4: error: instruction not supported in 32-bit mode hello.asm:5: error: instruction not supported in 32-bit mode hello.asm:6: error: instruction not supported in 32-bit mode hello.asm:7: error: instruction not supported in 32-bit mode hello.asm:9: error: instruction not supported in 32-bit mode ;/ |
|
m4tx |
» 2012-12-29 14:26:50 Hmmm... Pokaż kod. |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2012-12-29 14:28:06 section .text global _start _start: mov rax, 1 mov rdi, 1 mov rsi, tekst mov rdx, dlugosc syscall mov rax, 60 syscall
section .data tekst db "Czesc", 0ah dlugosc equ $ - tekst
|
|
m4tx |
» 2012-12-29 14:29:35 rdx? Toż to 64-bitowe rejestry :) Zmień -f elf na -f elf64 , albo napisz/znajdź sobie 32-bitowy kod. EDIT: Sprawdziłem nawet - kod kompiluje się w trybie 64-bitowym: m4tx2@m4tx-EP35-DS4:~$ nasm -f elf hello.asm hello.asm:4: error: instruction not supported in 32-bit mode hello.asm:5: error: instruction not supported in 32-bit mode hello.asm:6: error: instruction not supported in 32-bit mode hello.asm:7: error: instruction not supported in 32-bit mode hello.asm:9: error: instruction not supported in 32-bit mode m4tx2@m4tx-EP35-DS4:~$ nasm -f elf64 hello.asm m4tx2@m4tx-EP35-DS4:~$ |
|
matka5432 Temat założony przez niniejszego użytkownika |
» 2012-12-29 14:31:32 Hmmm prawdopodobnie dziala :D ale nie ma zadnego stop itp. section .text global _start _start: mov eax, 4
mov ebx, 1
mov ecx, tekst mov edx, dlugosc int 80h
mov eax, 1 int 80h
section .data
tekst db "Czesc", 0ah dlugosc equ $ - tekst
Moglbys wstawic tutaj jakas komende, lub cos podobnego, aby okienko sie zatrzymalo? nawet nie widze zeby sie cos wlaczylo gdy klikam na wygenerowany programik. |
|
m4tx |
» 2012-12-29 14:41:05 ale nie ma zadnego stop itp. |
A powinno? Nie wydaje mi się ;) Moglbys wstawic tutaj jakas komende, lub cos podobnego, aby okienko sie zatrzymalo? |
Co? O_o nawet nie widze zeby sie cos wlaczylo gdy klikam na wygenerowany programik. |
Bo... tak powinno być? Uruchamiaj program przez konsolę: m4tx2@m4tx-EP35-DS4:~$ nasm -f elf64 hello2.asm m4tx2@m4tx-EP35-DS4:~$ ld -o hello2 hello2.o m4tx2@m4tx-EP35-DS4:~$ ./hello2 Czesc |
|
« 1 » 2 |