Re: Assembleur x86-64 made in kernel

Top Page

Reply to this message
Author: Patrice Karatchentzeff
Date:  
To: Raphaël Dorado
CC: guilde
Subject: Re: Assembleur x86-64 made in kernel
Bingo...

En fait, on incrémente sur des adresses, donc de 8 octets en 8 octets
(64 bits). RCX contient donc une valeur en adresse, modulo 8. Pour
avoir un incrément de 1 paquet de 64 bits à chaque stosq, il faut bien
diviser l'adresse par 8.

Merci

Le jeu. 1 déc. 2022 à 15:59, Raphaël Dorado <rdorado@???> a écrit :
>
> Le "stosq" deplace 64 bits (8 octets) à chaque itération, le shrq divise le
> nombre d'octets à copier par 8 (?).
>
> Le 01/12/2022 à 15:30, Patrice Karatchentzeff a écrit :
> > Salut,
> >
> > J'ai un truc que je ne comprends pas. Le rôle de la fonction shrq dans
> > le code suivant :
> >
> > xorl %eax, %eax
> > leaq    _bss(%rip), %rdi
> > leaq    _ebss(%rip), %rcx
> > subq %rdi, %rcx
> > shrq $3, %rcx
> > rep stosq

> >
> > Le code est tiré de l'installateur du noyau. Le but est de faire un
> > reset de la section .bss avant de décomprimer le noyau comprimé qui
> > vient d'être recopié. C'est l'ultime étape avant la décompression du
> > noyau.
> >
> > On met l'accumulateur à zéro pour servir d'écrase... registre (xor)
> > On charge l'adresse de base de la section .bss (1er leaq)
> > On charge l'adresse de fin de la section .bss (2e leaq)
> > On calcule la différence relative que l'on place dans RCX
> > ????
> > On répète RCX fois la copie de EAX (cela devrait être RAX : je pense
> > qu'il y a une typo ici, comme à la première ligne) à l'adresse mémoire
> > contenue dans RDI (donc la base de la section la première fois), avec
> > un incrément de RDI à chaque fois. Bref, on écrit des zéros partout
> > dans la zone .bss sur la bonne longueur. (rep...)
> >
> > Le shrq est un décalage logique de CRX et je ne comprends pas son
> > intérêt. Il est aussi présent lorsque l'installateur copie le noyau
> > (avec rep movsq cette fois).
> >
> > Merci de votre aide,
> >
> > PK
> >
>
>



-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)