Menu
Coddy logo textTech

Assembler online

Pisz, uruchamiaj i udostępniaj fragmenty kodu bez żadnej konfiguracji.

Coddymain.asm
Output
Click Run to see the output here.

Uruchamiaj asembler online w przeglądarce

To darmowy kompilator asemblera online dla kodu x86-64 w składni NASM. Wpisz program, kliknij Uruchom, a Coddy zasembluje go poleceniem nasm -f elf64, zlinkuje przez ld i uruchomi powstały plik wykonywalny Linuksa na serwerze, po czym pokaże stdout, stderr i kod wyjścia. Nie trzeba niczego instalować: ani NASM, ani linkera, ani maszyny wirtualnej, ani cross-kompilatora.

Program startowy to kompletny punkt wejścia _start, który czyta linię ze standardowego wejścia i odpisuje powitanie, używając surowych wywołań systemowych read, write i exit, bez libc. Tak właśnie działa asembler: przenosisz argumenty do rax/rdi/rsi/rdx, wywołujesz syscall, a resztą zajmuje się jądro. Panel stdin pod edytorem pozwala przekazać dane wejściowe do programu przy każdym uruchomieniu, dokładnie jak przy przekierowaniu danych do prawdziwego pliku binarnego.

Dlaczego ten edytor online asemblera się przydaje

  • Prawdziwy toolchain x86-64 NASM. Kod źródłowy jest asemblowany przez nasm -f elf64 i linkowany przez ld na Linuksie, czyli tymi samymi poleceniami, które wpisujesz lokalnie, więc to, co działa tutaj, działa też na prawdziwej maszynie.
  • Bezpośrednie wywołania systemowe Linuksa. Program startowy używa read, write i exit przez instrukcję syscall bez pośrednictwa libc, więc widzisz dokładnie, jak rejestry przenoszą argumenty i wartości zwracane.
  • Obsługa standardowego wejścia. Przekaż bajty do programu przez panel stdin i odczytaj je wywołaniem systemowym 0. Przydaje się w klasycznych ćwiczeniach typu 'wczytaj imię, wypisz powitanie' i nie tylko.
  • Zero konfiguracji, natychmiastowa informacja zwrotna. Bez instalacji NASM, bez zapamiętywania flag linkera, bez błędów uprawnień: otwierasz stronę i edytor jest gotowy. Błędy asemblera i linkera trafiają prosto do okna wyniku.

Co możesz wypróbować w edytorze online asemblera

  • Wypisz stały napis jednym wywołaniem write, a potem zakończ program czysto przez exit(0). To najmniejszy kompletny program x86-64 i najszybszy sposób, żeby zobaczyć, jak _start i syscall do siebie pasują.
  • Wczytaj dane ze stdin do bufora w .bss, usuń końcowy znak nowej linii i odeślij tekst z powrotem. Ten wzorzec stoi za prawie każdym ćwiczeniem z asemblera opartym na danych wejściowych.
  • Dodaj dwie liczby w rejestrach i ręcznie zamień wynik na cyfry ASCII, żeby móc go wypisać przez write. W ten sposób uczysz się, że asembler nie ma print, są tylko bajty i wywołania systemowe.

Kompilator asemblera online: najczęstsze pytania

Jakiego asemblera i jakiej składni używa ten edytor online?
Używa NASM (Netwide Assembler) ze składnią Intela, dla x86-64 Linux. Kod jest asemblowany przez nasm -f elf64 i linkowany przez ld. Jeśli znasz składnię AT&T/GAS (styl %rax, movq), przepisz kod na styl Intela w NASM: mov rax, 1, section .text, global _start.
Czy muszę instalować NASM albo linker?
Nie. Cały toolchain działa na serwerze w odizolowanym kontenerze. Piszesz kod NASM w przeglądarce, klikasz Uruchom, a Coddy asembluje i linkuje program za ciebie. Lokalnie nie trzeba niczego instalować: ani NASM, ani ld, ani maszyny wirtualnej z Linuksem.
Jak wczytać dane wejściowe w asemblerze?
Użyj wywołania systemowego read (numer 0): wpisz 0 do rax (sys_read), 0 do rdi (stdin), adres bufora do rsi i maksymalną liczbę bajtów do rdx, a potem wykonaj syscall. Wszystko, co wpiszesz w panelu stdin pod edytorem, trafia do programu po uruchomieniu. Program startowy pokazuje cały wzorzec, łącznie z usuwaniem końcowego znaku nowej linii.
Dlaczego program potrzebuje _start zamiast main?
Bo program startowy jest linkowany przez ld bez środowiska uruchomieniowego C. main to konwencja libc: kod startowy C wywołuje tę funkcję po wstępnym przygotowaniu. Przy gołym linkowaniu przez ld nie ma libc, więc jądro skacze prosto do etykiety _start i dlatego każdy program tutaj definiuje global _start. Na końcu trzeba samodzielnie zadbać o czyste zakończenie wywołaniem systemowym exit (numer 60).
Czy mogę uczyć się asemblera w tym kompilatorze jako początkujący?
Tak. Zacznij od programu z powitaniem, zmień napis i obserwuj wynik. Potem spróbuj wczytywać dane, liczyć w rejestrach i ręcznie zamieniać liczby na tekst. Nie ma żadnej konfiguracji, a każde uruchomienie daje natychmiastowy wynik, więc możesz szybko próbować kolejnych wersji. To najszybszy sposób, żeby wyczuć rejestry, pamięć i wywołania systemowe.

Przydatne narzędzia do Assembly

Darmowe narzędzia w przeglądarce, które świetnie działają razem z edytorem Assembly online. Wszystkie w Coddy.