Created
April 24, 2020 10:59
-
-
Save gynvael/6a6e5b5adc8c7d0b5c32361de70b1aad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
generalnie jeśli chodzi o szukanie rzeczy do assemblera, to musisz zdecydować się na 3 rzeczy: | |
1) architekturę | |
2) system operacyjny | |
3) konkretny assembler | |
i szukać tutoriali pod te 3 rzeczy | |
1) w Twoim wypadku to x86-64 aka AMD64 aka x64 | |
aka 86 64-bit | |
2) hmmm Linux? czy Windows? jak wolisz? | |
[dla linuxa] | |
3) do wyboru jest nasm, yasm albo gnu as | |
sugerowałbym nasm albo yasm na początek | |
co nam daje | |
"nasm 64-bit linux tutorial" :slight_smile: | |
https://cs.lmu.edu/~ray/notes/nasmtutorial/ | |
to co tu mająsię przyda: https://montcs.bloomu.edu/Information/LowLevel/Assembly/linux-assembly-tutorial.shtml#x86-64 (sekcja Assemble, link a file for x86-64 Linux:) | |
https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml <-- przykładowe programy | |
https://p403n1x87.github.io/assembly/x86_64/2016/08/10/getting-started-with-x68-asm.html <-- i to też | |
do tego: | |
dokumentacja nasm: https://www.nasm.us/xdoc/2.14.02/html/nasmdoc0.html | |
https://software.intel.com/en-us/articles/intel-sdm <-- manuale intela | |
potrzebujesz: | |
Vol 1. do podstaw architektury | |
Vol 2A,B,C <--- głównie to, to lista instrukcji assemblera | |
Vol 3 na później/kiedyś | |
https://www.agner.org/optimize/calling_conventions.pdf <--- to na niedługo jako podpowiedź | |
głównie tabelki na stronie 10 | |
oraz coś co Ci się spodoba skoro znasz trochę C++ | |
https://godbolt.org/ | |
w tym piszesz kod w C++ i Ci wyskakuje w assemblerze | |
skompilowana wersja tego kodu | |
np https://godbolt.org/z/Vr2JRn | |
kapitalne do nauki asma jak się zna C/C++ | |
to co piszesz po lewej jest kompilowane do tego co jest po prawej | |
technicznie to samo dostajesz robić g++ -S -masm=intel asdf.cc | |
hmmm... do tego będziesz potrzebować debugger (gdb - ten sam co się do C/C++ pod linuxem używa) | |
i disassembler | |
https://www.hex-rays.com/products/ida/support/download_freeware/ | |
ten disassembler od razu ma dekompilator afair | |
więc będziesz mogła coś napisać w nasmie, skompilować, i zobaczyć jakby w C to wyglądało po zdekompilowaniu | |
(przy czym ten kod będzie trochę dziwnie wyglądać, bo trudno z assemblera się odzyskuje C) | |
potem jeszcze kilka rzeczy będzie, typu format ELF, etc | |
ale na początek tyle :wink: | |
i teraz ważna rzecz: każdy assembler ma delikatnie inną składnie | |
więc jesli byś np szukała czegoś i znalazła przykłady dla fasm 64-bit linux zamiast nasm 64-bit linux, to będą drobne różnice w instrukcjach, i DUŻE różnice w dyrektywach preprocesora/assemblera | |
żeby było śmieszniej GNU as domyślnie używa innej składni assemblera (AT&T), podczas gdy większość narzędzi używa składni Intel | |
różnica jest spora między nimi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment