J'étudie actuellement le langage d'assemblage x86 en suivant le livre de Kip Irvine.Que se passe-t-il si j'initialise un BYTE ou un SBYTE avec une valeur trop grande pour l'adapter?
Dans le livre, l'auteur a déclaré:
3.4.4 Définition BYTE et sbyte données
Le BYTE (octet définir) et sbyte (définir l'octet signé) directives pour le stockage d'allouer un ou plusieurs valeurs non signées ou signées. Chaque initialiseur doit correspondre à 8 bits de stockage .
Je me demandais juste, et si je assignais accidentellement une valeur qui est trop grande pour la zone de stockage? Quel genre de comportement devrais-je attendre? En raison de mon inexpérience, je ne pouvais pas trouver un exemple qui démontre le comportement, donc ce serait génial si quelqu'un pouvait fournir une explication avec un exemple de code.
Vous ne pouvez pas, ceci est une directive de compilation, l'assembleur signale une erreur. Dans votre code, vous utilisez les accès de taille appropriée, donc normalement le pire qui puisse arriver est la troncature/débordement. Si vous gâchez d'une manière ou d'une autre les tailles de données, vous pouvez écraser d'autres éléments en mémoire. – Jester
@Jester merci beaucoup pour le commentaire. Il me semble que vous avez de l'expérience en programmation en langage assembleur, cela vous dérange-t-il si je vous demande quel est le chemin d'apprentissage que vous avez suivi en étudiant l'assemblage et dans quel domaine trouvez-vous le plus utile? Toute réponse serait grandement appréciée, il ne faut pas trop longtemps, une ou deux phrases suffiront amplement. Merci encore! – Thor
Le chemin que j'ai suivi étudiait le désassemblage généré par l'optimisation des compilateurs, avec les manuels de référence Intel en main. C'est un chemin plutôt fastidieux, qui prend un certain temps, mais il en résulte une connaissance * très * pratique: être capable de comprendre ce que les compilateurs génèrent et pourquoi. Les livres sont aussi un excellent moyen d'apprendre. Le classique de Michael Abrash [* Zen of Assembly Language *] (http://www.jagregory.com/abrash-zen-of-asm/) mérite d'être lu. C'est un vieux livre qui se concentre principalement sur la programmation en langage assembleur 16 bits pour le 8088, donc vous ne le lisez pas pour la syntaxe, mais pour les intuitions intemporelles. –