This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:laborator-03 [2015/10/27 21:40] vladimir.diaconescu Added bonus |
laboratoare:laborator-03 [2016/10/16 23:51] (current) mihai.tiganus [[10p] BONUS: Lab 2, Reloaded (in Assembly)] |
||
---|---|---|---|
Line 29: | Line 29: | ||
<code asm> | <code asm> | ||
- | mov al, 12 <-> \xB0\x0C | + | mov al, 12 <-> '\xB0\x0C' |
- | xor dx, dx <-> \x66\x31\xD2 | + | xor dx, dx <-> '\x66\x31\xD2' |
- | jmp esp <-> \xFF\xE4 | + | jmp esp <-> '\xFF\xE4' |
</code> | </code> | ||
Line 75: | Line 75: | ||
Există cazuri în care se impun constrângeri asupra dimensiunii codului și/sau datelor, cum este cazul device-urilor specializate pentru un singur task, având puțină memorie. Din această categorie fac parte și driverele pentru dispozitive. | Există cazuri în care se impun constrângeri asupra dimensiunii codului și/sau datelor, cum este cazul device-urilor specializate pentru un singur task, având puțină memorie. Din această categorie fac parte și driverele pentru dispozitive. | ||
+ | |||
+ | === Fun === | ||
+ | |||
+ | Pentru mai multe detalii, discutați asistentul vostru de laborator pentru a vă împărtăși experiența lui personală în materie de limbaj de asamblare și cazurile practice de utilizare folosite. | ||
===== Familia x86 ===== | ===== Familia x86 ===== | ||
Line 324: | Line 328: | ||
- [30p] Modificați-l astfel încât la rularea lui să se afișeze mesajul ''%%Well done!%%''. Urmăriți comentariile marcate cu ''%%TODO%%'' | - [30p] Modificați-l astfel încât la rularea lui să se afișeze mesajul ''%%Well done!%%''. Urmăriți comentariile marcate cu ''%%TODO%%'' | ||
- [10p] De ce, în continuare, se afișează și mesajul greșit? Ce lipsește? | - [10p] De ce, în continuare, se afișează și mesajul greșit? Ce lipsește? | ||
- | ==== [10p] BONUS: Lab 2, Reloaded (in Assembly) ==== | + | ==== [10p] BONUS: Fibonacci ==== |
- | Implementați rezolvări pentru exercițiile din laboratorul precedent în limbaj de asamblare. Se punctează fiecare exercițiu. | + | Calculați al ''eax''-lea număr Fibonacci. |
===== Resurse utile ===== | ===== Resurse utile ===== | ||
+ | * [[http://savannah.nongnu.org/projects/pgubook/|Programming from the Ground Up]] | ||
+ | * [[http://beginners.re/|Reverse Engineering for Beginners]] | ||
* [[http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf|Intel 64 and IA-32 Architectures Software Developer Manual]] | * [[http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf|Intel 64 and IA-32 Architectures Software Developer Manual]] | ||
* [[http://css.csail.mit.edu/6.858/2015/readings/i386.pdf|Intel 80386 Programmer's Reference Manual]] | * [[http://css.csail.mit.edu/6.858/2015/readings/i386.pdf|Intel 80386 Programmer's Reference Manual]] | ||
* [[http://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/|RISC vs. CISC]] | * [[http://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/|RISC vs. CISC]] | ||
* [[http://unixwiz.net/techtips/x86-jumps.html|Intel x86 JUMP Quick Reference]] | * [[http://unixwiz.net/techtips/x86-jumps.html|Intel x86 JUMP Quick Reference]] |