Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

codage instructions - slide 10 - plutot INC BX #31

Open
monicabastreghi opened this issue Feb 27, 2014 · 1 comment
Open

codage instructions - slide 10 - plutot INC BX #31

monicabastreghi opened this issue Feb 27, 2014 · 1 comment

Comments

@monicabastreghi
Copy link

Pour coller à la réalité sans parler de la directive [BITS ..] ou des préfixes legacy trop vite, il est mieux de prendre comme exemple INC BX

En effet, le code 40 du INC sert à incrémenter un registre 32 bits ou un registre 16 bits avec l'aide d'un des préfixe legacy
Le slide dirait vrai uniquement en présence de la directive [BITS 32], en effet, dans ce cas, sans spécifier de préfixe 66 le registre sera celui de 32 bits et donc EBX.

Malheureusement le défaut est [BITS 16], donc dans le cas indiqué le codage correspond à INC BX.

dans l'exemple
section .text
INC EAX
INC AX
est codé
66 40 40
INC EAX est codé 66 40 : le préfixe 66 indique d'utiliser le registre 32 bits au lieu du défaut (16 bits)

avec la directive [BITS 32] on aurait par défaut les registres 32 bits et donc le codage
40 66 40
c'est INC AX qui est ici codé avec le préfixe 66 car la taille 16 n'est plus le défaut

@mcodutti
Copy link
Collaborator

Le problème c'est que ce n'est pas toujours [BITS 16] par défaut; ça dépend aussi des options de compilation.

  • Avec -f bin, il compile en pensant à du DOS -> 16 bits
  • Avec -f elf, il compile pour Linux -> 32 bits par défaut (ou 64 ?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants