Voici une ligne de code d'assemblage provenant d'un fichier core.Instruction MOV avec un décalage
0x00002ac8c957012d <+45>: mov 0x8(%rsp), %rsi
je remarquai que rsp de registre est à l'emplacement suivant donc j'utiliser la commande Examiner pour afficher le contenu, plus 16 autres objets/octets.
> x/16x 0x2acd5752a610
0x2acd5752a610: 0x70 0xa6 0x11 0xff 0x29 0xcd 0x22 0x00
0x2acd5752a618: 0x33 0xee 0xf1 0xa9 0xb2 0xcc 0x34 0x76
Lors de déterminer le décalage de 0x8 cela va être 0 en fonction de la valeur résultant étant 0x33 ou tout simplement compter en commençant par 1 à 8 depuis le début qui se traduit par la valeur étant 0x00?
RER est un registre, pas un registre ... Et ce que vous dit que RSP contient 0x2ac8c957012d ... qui est l'adresse de l'instruction 'mov' . –
vous chargez en RSI, un registre de 64 bits, donc 8 octets seront chargés, pas 1. – ilkkachu
Si la valeur dans 'rsp' est' 0x2acd5752a610', alors 8 octets commençant à '0x2acd5752a618' seront chargés dans' rsi ', ie l'octet de poids faible (' sil') sera en effet '0x33', mais tout le' rsi' sera chargé, y compris après 7 octets 'ee f1 ...'. Le '0x00' est '' [rsp + 7] ', non impliqué. – Ped7g