• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nauka assemblera

Object Storage Arubacloud
0 głosów
933 wizyt
pytanie zadane 11 lipca 2016 w Assembler przez Eliro Stary wyjadacz (12,160 p.)

Posiadam procesor amd64 i linuxa ubuntu. Zainstalowałem sobie program geany do kompilacji. C,C++ oraz Pythona kompiluje bez problemu, a więc postanowiłem uczyć się w tym assemblera. Niestety - żaden kod źródłowy z kursów nie działa. Przykładowo

 .text
 .global _start
 _start:
        movl $4, %eax
        movl $1, %ebx
        movl $napis, %ecx
        movl $len, %edx
        int $0x80
 
        movl $1, %eax
        movl $0, %ebx
        int $0x80
 
 .data
 napis:
        .string "hello world!\n"
 len = . - napis

 

Komunikat

/tmp/geany_run_script_TZ0JKY.sh: 7: /tmp/geany_run_script_TZ0JKY.sh: ./asembler: not found

 

Drugą sprawą jest sam assembler. Czy na każdy procesor trzeba się uczyć osobnego assemblera? Moglibyście polecić mi coś, gdzie mógłbym się nauczyć kompletnych podstaw tego języka?

1 odpowiedź

+1 głos
odpowiedź 11 lipca 2016 przez jpacanowski VIP (101,940 p.)
wybrane 17 października 2018 przez Eliro
 
Najlepsza

int $0x80 

Takie coś tobie nie przejdzie w środowisku 64-bitowym.
https://sites.google.com/site/prognisk/amd64-abi

Moglibyście polecić mi coś, gdzie mógłbym się nauczyć kompletnych podstaw tego języka?

http://bogdro.ciki.me/

https://pl.wikibooks.org/wiki/Asembler

https://sites.google.com/site/prognisk/home

Tutoriale wyżej wymienione mogą wydawać się trochę chaotyczne jak na początek przygody z asemblerem, więc najbardziej polecam jednak tą książkę Asembler - wykłady i ćwiczenia, Stanisława Kruka
http://www.ibuk.pl/fiszka/1268/asembler-wyklady-i-cwiczenia.html

Czy na każdy procesor trzeba się uczyć osobnego assemblera?

Tak, ale tylko jeśli mówimy o innych architekturach procesorów jak np. MIPS, ARM, PowerPC, Motorola itp.

komentarz 11 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)
Mam procesor amd64, a chciałbym też się uczyć pod intela. Można coś takiego zrobić?

Dałbyś jakiś przykładowy kod, żebym sprawdził czy w ogóle mam jakikolwiek kompilator do assemblera?
komentarz 11 lipca 2016 przez jpacanowski VIP (101,940 p.)
Intel i ARM to ta sama architektura.
komentarz 11 lipca 2016 przez Magicone Nałogowiec (45,100 p.)

ja dorzucę jeszcze to ;)

komentarz 11 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)

Zainstalowałem osobny kompilator do assemblera i działa. A co myślicie o tym kursie https://www.youtube.com/watch?v=OTLyD2EEN0w&list=PL7CA8FE35B665D4DD ?

 

komentarz 11 lipca 2016 przez jpacanowski VIP (101,940 p.)

Asembler, instrukcje procesora są te same, lecz w trybie 64-bitowym w inny sposób wywołuje się procedury. W 32-bitowym trybie, procedury wywołuje się poprzez int 0x80, a parametry podaje się poprzez stos, podczas gdy, w trybie 64-bitowym zamiast int 0x80 wywołuje się poprzez syscall a parametry podaje się w rejestrach.

komentarz 11 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)

jestem zielony w temacie assemblera. Chciałbym się nauczyć kompletnych podstaw, żeby potem załapać o co chodzi. W tej chwili w kompilatorze wyskakuje błąd po wpisaniu kodu z odcinka

assembler.s: Assembler messages:
assembler.s:1: Error: junk at end of line, first unrecognized character is `['
assembler.s:4: Error: invalid char '[' beginning operand 1 `[ebx+1*4]'
assembler.s:4: Error: no such instruction: `putchar'
assembler.s:5: Error: too many memory references for `add'
assembler.s:8: Error: invalid char '[' beginning operand 1 `[ebx+0*4]'
assembler.s:8: Error: no such instruction: `exit'

[bits 32]

push 'H'
call [ebx+1*4] ; putchar
add esp,4

push 0
call [ebx+0*4] ; exit

 

komentarz 11 lipca 2016 przez Magicone Nałogowiec (45,100 p.)
W x64 pierwsze 6 bodajże argumentów idzie w rejestrach tylko, reszta stos. Na pewno są te same instrukcje? W sensie kody wywołań :v
komentarz 11 lipca 2016 przez jpacanowski VIP (101,940 p.)
Najlepiej kompiluj używając asemblera NASM. Nie poprzez IDE.

Pokaż kod i napisz czym kompilujesz.
komentarz 11 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)

Mam linuxa ubuntu!

pakiet binutils,

as assembler.s -o assembler.o
ld assembler.o -o assebler
./assembler

 

 

Kod powyżej - poprzedni post.

komentarz 11 lipca 2016 przez jpacanowski VIP (101,940 p.)
Kompiluj NASM'em...

# nasm -f elf czesc.asm
# ld -s -o czesc czesc.o
komentarz 11 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)

ld -s -o assembler assembler.o

ld: i386 architecture of input file `assembler.o' is incompatible with i386:x86-64 output
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400080

 

 

komentarz 11 lipca 2016 przez jpacanowski VIP (101,940 p.)

Spróbuj:

nasm -f elf32 czesc.asm

komentarz 12 lipca 2016 przez Eliro Stary wyjadacz (12,160 p.)
Ten sam błąd.

Podobne pytania

0 głosów
3 odpowiedzi 398 wizyt
pytanie zadane 29 lipca 2016 w Assembler przez Eliro Stary wyjadacz (12,160 p.)
0 głosów
4 odpowiedzi 634 wizyt
pytanie zadane 16 marca 2020 w Assembler przez tonn204 Mądrala (7,440 p.)
0 głosów
2 odpowiedzi 703 wizyt
pytanie zadane 11 lipca 2019 w Assembler przez niezalogowany

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...