GNU/Linux >> Tutoriels Linux >  >> Linux

Lecture d'un fichier en assembleur

vous devez déclarer votre buffer dans la section bss et le bufsize dans data

section .data
   bufsize dw      1024

section .bss
   buf     resb    1024

Ohh, ça va être amusant.

Le langage d'assemblage n'a pas de variables. Il s'agit d'une construction de langage de niveau supérieur. En langage assembleur, si vous voulez des variables, vous les créez vous-même. Montée. Dans les deux sens. Dans la neige.

Si vous voulez un tampon, vous devrez soit utiliser une région de votre pile comme tampon (après avoir appelé les instructions de configuration de cadre de pile appropriées), soit utiliser une région sur le tas. Si votre tas est trop petit, vous devrez créer une instruction SYSCALL (un autre INT 80h) pour demander plus au système d'exploitation (via sbrk).

Une autre alternative est de se renseigner sur le format ELF et de créer une variable globale dans la section appropriée (je pense que c'est .data).

Le résultat final de chacune de ces méthodes est un emplacement mémoire que vous pouvez utiliser. Mais vos seules vraies "variables" comme vous en avez l'habitude dans le monde maintenant merveilleux du C sont vos registres. Et ils ne sont pas très nombreux.

L'assembleur peut vous aider avec des macros utiles. Lisez la documentation de l'assembleur ; Je ne m'en souviens pas de mémoire.

La vie est dure là-bas au niveau ASM.


Après l'appel à open, le descripteur de fichier est dans eax. Vous le déplacez à juste titre eax vers ebx, où l'appel à read le cherchera. Malheureusement, à ce stade, vous l'avez déjà remplacé par 3, l'appel système pour la lecture.


Linux
  1. Comment Cater un fichier depuis Awk ?

  2. Créer des données de lecture de texte à partir d'un fichier ?

  3. Lecture de lignes à partir d'un fichier avec Bash :pour Vs. Tandis que?

  4. Lire des modèles Grep à partir d'un fichier ?

  5. En-têtes de fichiers ELF

Comment supprimer les caractères (^M) d'un fichier sous Linux

Lecture d'un fichier CSV avec des requêtes SQL à partir du shell Linux

Créer un PEM à partir d'un fichier PPK

Autorisation exec inattendue de mmap lorsque les fichiers d'assemblage sont inclus dans le projet

En quoi install -c est différent de cp

copier le fichier de Windows vers Linux