Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kompilacja assemblera pod linuxem

Ostatnio zmodyfikowano 2012-12-29 14:45
Autor Wiadomość
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.


P-72265
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
).
P-72266
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
;/
P-72267
m4tx
» 2012-12-29 14:26:50
Hmmm... Pokaż kod.
P-72271
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
P-72272
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:~$
P-72274
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.
P-72275
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
P-72277
« 1 » 2
  Strona 1 z 2 Następna strona