Aller au contenu
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[résolu]Assembleur, comprend pas un truc.

Featured Replies

Posté(e)

Mon programme:

.section .rodata
.LC0:
  .string "%i\n"
  .text
.globl main
  .type main, @function
main:
#création du cadre de pile
  pushl %ebp
  movl %esp,%ebp
  pushl %ecx
  subl $4, %esp
#chargement de la valeur 6 dans eax et 5 dans ebx
  movl $6, %eax
  movl $5, %ebx
#impression du contenu de eax sur l'écran
  movl %eax, 4(%esp)
  movl $.LC0, (%esp)
  call printf
#impression du contenu de ebx sur l'écran
  movl %ebx, 4(%esp)
  movl $.LC0, (%esp)
  call printf
#impression du contenu de eax sur l'écran
  movl %eax, 4(%esp)
  movl $.LC0, (%esp)
  call printf
#fin du programme
  movl $0, %eax
  addl $4, %esp
  popl %ecx
  popl %ebp
  ret

m'affiche ceci:

yann@yann-laptop:/home/tp/Archi/Asm$ gcc exo3b.s -o exo3b

yann@yann-laptop:/home/tp/Archi/Asm$ ./exo3b

6

5

2

yann@yann-laptop:/home/tp/Archi/Asm$

Je ne comprend pas pourquoi il m'affiche 2 et non 6, le contenu de %eax aurait été changé? par quoi?

Je débute en assembleur, la solution est surement très bête, mais la je ne vois pas trop. :craint:

Modifié par Obi Yann

Posté(e)

J'aimerais t'aider mais n'ayant fait que très peu d'assembleur (x86, 68k et ARM7) au cours de ma scolarité, quand bien même je vois le fonctionnement global de ton code, j'ai du mal à comprendre le fonctionnement précis des instructions. Tu pourrais rajouter quelques commentaires précisant l'objectifs poursuivi par certaines suites d'instructions ?

C'est pas dit que quelqu'un pourra toujours aider après ça (enfin je pense qu'il y a tout de même quelques personnes qui touchent à l'assembleur de temps à autre), mais ça devrait tout de même rendre la résolution de ton problème plus facile.

Posté(e)

Bonjour,

Je ne comprend pas pourquoi il m'affiche 2 et non 6, le contenu de %eax aurait été changé? par quoi?

Parceque printf n'est pas de type void et retourne je ne sais plus quelle valeur dans %eax.

Ce qui est la façon standard pour une fonction sous GCC de retourner une valeur jusqu'à 32 bits...

Explications

youhou ça y est j'ai ma première étoile (au bout de 3 ans 1/2)!

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.