x86-64 Assembly

Mehdi Makhloufi

MinilibC

Sommaire

Présentation du projet

Le langage x86-64 Assembly

Conclusion

Organisation

Avantage du projet

Présentation du projet

C Standard Library

int strlen(char *str)
int strcmp(char *s1, char *s2)
char *strchr(const char *s, int c)
void *memset(void *s, int c, size_t n)
void *memcpy(void *dest, void *src, size_t n)
...
char *strpbrk(const char *dest, const char *accept)

Le langage

x86-64 Assembly

Les registres

 

-rdi : 1er argument

-rsi : 2ème argument

-rdx : 3ème argument

-rcx : 4ème argument 
     (counter for loop) 
-rax : valeur de retour

-rbx : base register

-rsp : stack pointer

-rbp : frame pointer

Le langage

x86-64 Assembly

Les registres

 

-r8 : 5ème argument


-r9 : 6ème argument


-r10 - r15 ...

 

-32bits registers : esi
 

-16bits registers : si


-8bits registers : sil

 

Le langage

x86-64 Assembly

Les instructions

 

-Data movement : MOV, ...


-Arithmetic : INC, DEC, ADD, SUB, MUL, NEG, ...


-Bitwise : XOR, NOT, ...


-Resultless : CMP

Le langage

x86-64 Assembly

Les instructions

 

-Type conversion : CBW, CWDE, CDQE



-Bitshifts : SHL, SHR, SAL, SAR, ROL, ROR


Le langage

x86-64 Assembly

Les instructions
Conditional jumps
-Unconditional jump : JMP
-Function call : CALL
-Function return call : RET
-System Function 
  call : SYSCALL
 JE, JNE, JL, JNL, JG, JNG

...

Avantage du projet

Mieux comprendre le langage machine

et nos programmes

...

Avantage du projet

Aide pour l'utilisation de GDB

Organisation

Conclusion

Découvrir un nouveau langage

Comprendre ce que la machine fait avec les registres

Aide à débuger nos projets

Merci pour votre    ecoute

Made with Slides.com