Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1377 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Noob en assembleur AAT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Noob en assembleur AAT

n°1274997
tris
Posté le 30-12-2005 à 16:06:59  profilanswer
 

Voila je suis étudiant en IUT informatique, et on fait de l'assembleur AAT sous linux, en utilisant emacs en compilant avec gcc et en exécutant pas a pas avec le débuggueur gdb. ainsi notre premier programme (hello world bien sur ^^) ressemble à ça
 
.data
bonjour:
 .string "hello world!\n"
taille:
 .long taille - bonjour
 
.text
.globl main
main:
 movl $4, %eax
 movl $1, %ebx
 leal bonjour, %ecx
 movl taille, %edx
 int $0x80
 
 xorl %eax, %eax
 incl %eax
 xorl %ebx,%ebx
 int $0x80
 
Je comprends à peu près ce que ça veut dire, mais j'aimerai pouvoir le modifier, le compiler et l'éxécuter pas à pas mais dans un environnement windows XP. Quels sont les logiciels qui permettent de faire ça (éditeurs, compileurs les plus simples) ?
 
(j'ai essayé avec cygwin mais ça bug : /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):: undefined reference to `_WinMain@16')
 
 
Merci

mood
Publicité
Posté le 30-12-2005 à 16:06:59  profilanswer
 

n°1277526
Fused
Posté le 05-01-2006 à 12:39:23  profilanswer
 

Ben là en gros tu affiche "hello world" et c'est tout!
 
Il y a un truc que tu peux otpimiser:
 xorl %eax, %eax  
 incl %eax  
 
Tu peux le réduire a movl 1, %eax (puisque c'est ce que tu fais au final) , c'est du fignolage :)
 
Sinon pour ton logiciel pourquoi ne pas regarder en haut à droite du forum dans la partie programmation, puis tu clic sur "logiciels pour programmer" et là tu cherches ASM...

n°1279013
tris
Posté le 08-01-2006 à 11:59:17  profilanswer
 

c'est déja optimisé ^^
étonamment, movl 1 prend plus de cycles que  
xorl %eax, %eax  
incl %eax  

n°1279018
Fused
Posté le 08-01-2006 à 12:04:31  profilanswer
 

Ah bon... c'est les mystères du pentium ça alors!

n°1279072
tris
Posté le 08-01-2006 à 13:40:52  profilanswer
 

ben oui, mais en fait moi je cherche un compilateur et un débugger pour faire tt ça sous windows, et dans le topic que tu me donnes, il n'est question que d'éditeurs.

n°1279090
Fused
Posté le 08-01-2006 à 14:00:40  profilanswer
 

Essaye de repartir avec cywin, tu n'as peut être pas installé le compilateur et le déboggeur.

n°1279175
Scarmatil
magma idempotent
Posté le 08-01-2006 à 17:34:09  profilanswer
 

Si tu utilises Windows, il faudra de toute façon changer d'interruptions donc tu peux utiliser RosAsm, c'est un IDE/Assembleur/Debugger.  
Voilà ce que ton programme donnerais (en utilisant WriteConsole qui est l'équivalent de la fonction utilisée ici pour afficher le message):
(Il faut juste sélectionner Console dans File/Output pour que ça fonctionne)

[CR 0D LF 0A]
[bonjour: B$ 'hello world!' CR LF taille: len]
[CarEcrits: D$ 0]
 
Main:
    call 'Kernel32.AllocConsole'
     
    push &STD_OUTPUT_HANDLE  
    call 'Kernel32.GetStdHandle'
 
    push 0
    push CarEcrits
    push D$taille
    push bonjour  
    push eax
    call 'Kernel32.WriteConsoleA'  
 
    call 'Kernel32.FreeConsole'
     
    call 'Kernel32.ExitProcess'


 


---------------
Scarmatil
n°1279518
db__
spécialiste de l'à peu près
Posté le 09-01-2006 à 13:00:06  profilanswer
 

Bonjour
A la vue du programme publié fort simple, quel est l'intéret de faire une référence à main vu qu'il n'y a aucun contexte spécial à préparer, il n'y a pas de liaison à faire. J'aurais utilisé _start à la place de main et un ld du .o pour faire l'exécutable ou un gcc -nostdlib le tout suivit d'un sstrip devrait donner un exécutable de moins de 1 Ko
Dans l'exemple de scarmatil, où est l'assembleur dans tout ça ?
ceux ne sont que mise en pile des paramètres de fonctions C appelés puis appels de fonctions. Autant utiliser le C directement c'est plus lisible.
sous linux, l'exemple met les paramètres dans les registres et appelle une fonction par une interruption c'est guère mieux mais fait plus assembleur. Cet exemple n'est vraiment pas démonstratif de ce qu'est la programmation en assembleur.

n°1283940
tris
Posté le 15-01-2006 à 14:11:12  profilanswer
 

le programme n'est pas intéressant en lui même, je l'étudie a des fins pédagogiques, je l'ai copié ici juste pour qu'on soit bien d'accord sur le type de syntaxe. programmer en C ne m'interesse pas, mon but est d'apprendre l'assembleur. sinon c'est sur que c'est plus simple en java, en ada, ou en php ... mais ce n'est pas le but...
 
je repartirai sur cygwin alors, un jour peut être, en attendant j'ai installé mandriva 2005, j'ai rarement vu on OS aussi lourd, lent et peu pratique. meme sur le net j'ai l'impression d'avoir un 56 K.

n°1284148
Matox
Posté le 15-01-2006 à 20:34:09  profilanswer
 

tris a écrit :

c'est déja optimisé ^^
étonamment, movl 1 prend plus de cycles que  
xorl %eax, %eax  
incl %eax


 
heu non c'est pas étonnant :
xorl %eax, %eax : met a zero le registre ( et oui   a xor a = 0 ! ) en manipulant les bits du registre
incl %eax : fait un decalage de sorte d'avoir 1 dans le registre : bref il fait entrer un 1 en bit poids fort et fait sortir un zero
 
=> il ne fait que de la manip sur les registres, probablement cablé  
 
movl 1  : ca doit aller chercher 1 dans la memoire : tres tres long
 
mais bon un bon assembleur  peut optmiser ca tout seul...

mood
Publicité
Posté le 15-01-2006 à 20:34:09  profilanswer
 

n°1284325
Fused
Posté le 16-01-2006 à 10:41:42  profilanswer
 

Ca va chercher loin ces optimisations, tant que ça me prenait moins de place sur le papier ça m'allait :)

n°1284405
christophe​_d13
L'efficacité à tout prix.
Posté le 16-01-2006 à 12:41:03  profilanswer
 

AT&T et non AAT


---------------
http://www.ikalizer.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Noob en assembleur AAT

 

Sujets relatifs
[SQL] (noob) difference entre char et varcharAssembleur inline en C
Welcome to da noob![noob] programme en console --> tache de fond
Conseil ( noob inside )Afficher le contenu d'1 fichier XML dans un flash - Master NooB inside
Problème d'execution d'un logiciel compilé. (Noob inside)erreur a la compil (niveau noob)
Convertir un mod entre deux php - noob insidePb de noob avec une commande start
Plus de sujets relatifs à : Noob en assembleur AAT


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR