The document discusses reasons for learning assembly language including optimizing software, debugging programs more easily, and developing low-level systems. It covers basic concepts like memory, instructions, processors, and registers. Examples of assembly code are provided. The document emphasizes learning assembly language thoroughly by reading code, completing challenges like CTFs, and profiling applications.
This PowerPoint helps students to consider the concept of infinity.
De ce să știi limbaj de asamblare
1. De ce s˘a s, tii limbaj de asamblare?
R˘azvan Deaconescu
razvan.deaconescu@cs.pub.ro
Informatica la Castel 2016 (Macea, Arad)
24 august 2016
1 / 22
2. Exemple din securitatea ofensiv˘a
offensive security
serviciu de tip hello configurat pe mas, in˘a virtual˘a
Smashing the Stack for Fun and Profit (aleph1)
https://www.exploit-db.com/local/
https://www.exploit-db.com/shellcode/
https://www.exploit-db.com/docs/39665.pdf
2 / 22
3. Nevoia de optimizare
Make it work. Make it right. Make it fast.
Kent Beck
http://osxr.org:8080/glibc/source/sysdeps/x86/bits/string.h
3 / 22
4. Nevoia de debugging
printf debugging
valori variabile
funct, ii apelate (fluxul programului)
valori din memorie
valorile registrelor procesorului
codul rulat de procesor
4 / 22
5. Dezvoltare low-level
sisteme ˆıncoporate (embedded systems)
Board Support Package: bootloader, kernel, drivere
software de sistem (system software)
dezvoltare de kernel (kernel development)
5 / 22
6. ˆInainte de a ˆıncepe
mai mult citim decˆat scriem
ca s˘a scrii poves, ti bune trebuie s˘a cites, ti poves, ti bune
ca s˘a scrii cod bun trebuie s˘a cites, ti cod bun
mai mult ca orice, limbajul de asamblare mai mult se cites, te
ˆInv˘at, ˘am limbaj de asamblare ca s˘a ˆınt, elegem, mult mai rar
s˘a scriem.
R. Deaconescu, 2016, Macea, Arad
6 / 22
7. De ce e mai us, or?
mas, ini virtuale
emulatoare
documentat, ie
7 / 22
9. Concepte
memorie
adres˘a de memorie
cod mas, in˘a (instruct, iuni)
procesor
registre
operat, ii / mnemonici
operanzi: registre, adrese de memorie, valori
9 / 22
10. Bazele limbajului de asamblare
datele rezid˘a ˆın memorie
datele sunt aduse din memorie ˆın registrele procesorului
procesorul face operat, ii cu datele din registre
rezultatele operat, iilor sunt scrise ˆınapoi ˆın memorie
unele informat, ii pot fi preluate s, i transmise c˘atre dispozitive
de intrare/ies, ire
10 / 22
14. ˆInt, elegerea sistemului de calcul
De ce ˆınvat, ˘a oamenii obis, nuit, i s˘a cˆante la instrumente muzicale?
De ce fac oamenii obis, nuit, i sport ˆın mod activ?
De ce le place oamenilor (ˆın special copiilor) s˘a demonteze lucruri?
Mastery, Autonomy and Purpose (Dan Pink: Drive)
curiozitate s, i expertiz˘a
14 / 22
15. John “maddog” Hall: The Third Language
https://www.lpi.org/the-third-language/
http://www.techworld.com/operating-systems/
john-maddog-hall-why-raspberry-pi-is-only-beginning-3453073/
2/
15 / 22
16. Joel Spolsky: Law of Leaky Abstractions
http:
//www.joelonsoftware.com/articles/LeakyAbstractions.html
16 / 22
18. Shlemiel the Painter’s Algorithm
Joel Spolsky: Back to Basics
http:
//www.joelonsoftware.com/articles/fog0000000319.html
18 / 22
19. Poves, ti, povestiri, amintiri
Minunata c˘al˘atorie a lui R˘azvan ,,Senpai” Deaconescu ˆın
lumea calculatoarelor
19 / 22
20. Cum ˆınv˘at, /cum aprofundez
Nu ˆınv˘at, a ceva ca s˘a ˆınvet, i ceva / c˘a e bine / c˘a se caut˘a / c˘a
vrei s˘a s, tii.
Pune-t, i obiective s, i ˆınvat, ˘a ca o consecint, ˘a. Means to an end.
competit, ii de tip CTF (Capture the Flag)
site-uri de tip wargames
profiling la aplicat, ii
programeaz˘a pe platforme ARM (sau MIPS): Raspberry Pi
Randal E. Bryant, David R. O’Hallaron: Computer Systems:
A Programmer’s Perspective
20 / 22
21. La final
ˆInvat, ˘a ˆın profunzime.
Stric˘a lucrurile.
Detaliile fac diferent, a.
R˘abdarea este o virtute.
When solving problems, dig at the roots instead of just hacking at
the leaves.
Anthony J. D’Angelo
Laborator de introducere ˆın limbaj de asamblare: joi, 25 august
2016, ora 21:00
21 / 22