Witam, mam taki program jak poniżej. Mam go na maszynie wirtualnej z linuchem XenialXerus 64 bity. po napisaniu programu uruchamiam polecenia
- nasm -f elf64 program1.asm
- ls i widze ze mam plik program1.o
- ld program1.o -o.program1
- ./program1 --> komunikat nie ma takiego pliku ani katalogu
Walczyłem z tym trochę po czym juz z braku laku dałem nasm -f elf program1.asm
i dostałem instruction not supported in 32-bit mode.
No i teraz zgłupiałem.... Mam 32 bit mode na 64 bitowym linuchy? jeżeli tak to czemu kompiluje sie elf64.
A jeżeli jest ok to czemu przy próbie - ./program1 dostaje komunikat nie ma takiego pliku ani katalogu
Dzięki za pomoc
segment .text ; poczatek sekcji kodu
global _start ; linker ld chce ten symbol
_start: ; punkt startu programu
mov rax, 1 ; numer funkcji systemowe sys_write zapisz do pliku
mov rdi, 1 ; numer pliku do ktorego piszemy 1-standardowe wyjscie
mov rsi, tekst ; adres offset tekstu
mov rdx, dlugosc ; rdx=dlugosc tekstu
syscall ; wywolujemy funk. systemowa
mov rax, 60 ; numer funk sysyemowej
syscall ; wywolujemy funk systemowa
section .data ;poczatek sekcji danych
tekst db "CZESC",0ah ; napis ktory wyswietlamy
dlugosc dq $ - tekst ;dlugosc napisu
;KONIEC