Accueil > Forum > > > > ebx et interface C/C++
ebx et interface C/C++
vendredi 20 avril 2007 à 23:10:01 |
ebx et interface C/C++

kaervas
|
Bonjour,
pourquoi ne pas modifier la valeur du registre %ebx dans une interface en C/C++?
En effet, j'ai code plusieurs fonctions dans des .o, que j'utilise dans
mon code C, et si je modifie %ebx, j'ai des problemes (vu egalement ce
probleme sur un tuto).
Donc pour le coup je dois le push/pull, mais j'aimerais savoir a quoi
cela est du? (j'ai lu aussi qu'il n'y avait pas ce probleme en asm pur
ou lib dynamique?).
Merci d'avance.
|
|
samedi 21 avril 2007 à 03:17:25 |
Re : ebx et interface C/C++

kaervas
|
En me relisant c'est pas tres clair. [...] "push ebx : ici cela n'est pas réellement utile non plus puisque ebx, on
n'y touche pas; mais c'est une question de bonnes habitudes car il est
interdit pour une fonction de modifier ebx ( quand on l'interface avec
du C/C++ tout du moins, en asm pur vous faites ce que vous voulez ) " [...] sources : [ Lien ]Pourquoi? merci.
|
|
samedi 21 avril 2007 à 09:28:26 |
Re : ebx et interface C/C++

BruNews
|
Réponse Windows, autres OS à voir: "asm pur" qu'est-ce à dire ??? si tu écris un prog en complet asm sera idem, C/C++ produit un listing asm. Tout OS à des specs pour developper dessus tout comme il y a des règles pour un jeu. La 1ere règle étant pour Win32: Hors EAX, ECX et EDX, tous les registres sont à restituer dans leur état original en sortie de fonction.
ciao... BruNews, MVP VC++
|
|
samedi 21 avril 2007 à 11:57:33 |
Re : ebx et interface C/C++

kaervas
|
Pour l'asm pur je ne sais pas, mais j'ai vu quelqu'un ne pas restaurer la valeur de ebx pour une lib dynamique sous linus et "a priori" il n'y avait pas de soucis. Apres pour ma question, en fait oui, j'imagine normal de ne pas toucher a ce qui est exterieur aux 4 registres de donnees, modifier les registres qui indique la position dans le code peut effectivement poser quelques soucis! Mais, pour ebx, je me posais la question. Pourquoi ce registre de donnee particulier ne devait pas etre touche? Que fait le system, ou le compilateur, avec ? (chez moi linux donc format elf, et gcc donc avec as et en at&t).
|
|
dimanche 22 avril 2007 à 19:26:41 |
Re : ebx et interface C/C++

_dune2_
|
Salut, Concernant la compilation sous GNU/Linux-elf avec GCC : La convention d'appel de fonction sur un système linux-elf est décrite sur le site suivant : [ Lien ]Avec la phrase suivante : "
The convention used here is that the callee is allowed to mess up the
values of the EAX, ECX and EDX registers before returning. So, if the
caller wants to preserve the values of EAX, ECX and EDX, the caller must
explicitly save them on the stack before making the subroutine call.
On the other hand, the callee must restore the values of the EBX, ESI and
EDI registers. If the callee makes changes to these registers, the callee
must save the affected registers on the stack and restore the original
values before returning. " Ce qui explique clairement que dans le cadre d'un appel de fonction : "On the other hand, the callee must restore the values of the EBX, ESI and
EDI registers" donc tu dois restorer par convention les registres EBX, ESI et EDI qui ont servi à passer les paramètres à la fonction. (il se peut effectivement que l'appelant fasse la sauvegarde, ce qui explique que dans certain cas cela ne plante pas, mais par convention elle n'y est pas obligé et peut donc planter ;) ). dune2. Gentoo... que du bonheur ...
|
|
lundi 23 avril 2007 à 21:52:43 |
Re : ebx et interface C/C++

kaervas
|
Merci pour cette doc c'etait interessant.
Mais ce n'etait pas vraiment ma question en fait,
j'ai bien vu effectivement, qu'il fallait les sauvegarder ebx (sinon ca segfaultait!),
mais j'aimerais juste savoir pourquoi.
En fait j'ai un prog a rendre pour mon ecole en asm, mais j'ai decider
de le faire avec du C, le truc c'est que je que je vais devoir
expliquer pourquoi je ne touche pas a ebx! (et puis ca m'interesse
aussi de savoir evidemment). Donc si quelqu'un sait...
|
|
lundi 23 avril 2007 à 22:04:13 |
Re : ebx et interface C/C++

BruNews
|
Mais c'est très clair le pourquoi, le system que soit Win ou Nux utilise au maximum les registres et donc y stocke des valeurs pour accélérer le travail. Tu peux donc utiliser tous les registres que tu veux mais les restaurer après usage.
ciao... BruNews, MVP VC++
|
|
mardi 24 avril 2007 à 00:23:08 |
Re : ebx et interface C/C++

kaervas
|
Ce n'est pas encore tres clair justement... Il faudrait que j'etudie un peu plus ce que fait le system quand il execute le programme, par rapport au format elf et aux differentes sections, parceque en effet il doit bien en quelque sorte 'parser' l'executable (entre les types/taille/portee de chaque section) et donc oui doit sans doute utiliser (pour optimiser et/ou juste garder en memoire 'rapide' quelque chose) ebx a ce moment la.. ma question s'etait pose parceque je trouvais ca etrange que juste la modifier altere alors l'execution du programme, et surtout que ceci n'est specifie que dans peu de tuto. Merci!
|
|
mardi 24 avril 2007 à 12:12:50 |
Re : ebx et interface C/C++

_dune2_
|
Salut,
La convention de programation est tel-quel ... maintenant si tu ne veux pas suivre la convention de programation, faut pas se plaindre de certain plantage ... Une voiture est conçue pour utiliser un volant ... tu peux y adapter un joystick à ta sauce ... maintenant si tu te plantes avec ta voiture tu ne pourras t'en prendre qu'à toi même ... (c'est un peu plus clair comme ça ? ;) )
Gentoo... que du bonheur ...
|
|
Cette discussion est classée dans : code, probleme, interface, ebx
Répondre à ce message
Sujets en rapport avec ce message
prob mode protégé pour graphisme [ par prunkdump ]
Bonjours afin de testé un de mes programmes qui passe en mode protégé j'ai éssayé de renplir en 32bits le buffer d'écran en mode graphique 13h. Au déb
aide pour code [ par marooh ]
Bonjour, j'ai un code assembleur qui permet de trouver le maximum d'un tableau.En le compilant, la premiere phase passe avec succès mais en créant l
je bloque!!!! [ par marooh ]
bonjour, j'ai ecrit un code assembleur qui compte le nombre des séparateurs dans une chaine saisie,en assemblant tout va bien mais l'execution ne donn
prob avec une fonction [ par marooh ]
bonjour, j'ai un gros probleme j'ai écrit un code assembleur qui permet de trouver le mot le plus long et de l'afficher mais à l'execution il affiche
un énorme travail de votre part [ par mana ]
bonjour, voici un programme écrit en c++ (il permet de passer d'une image en couleur 24bits(ARGB) a une image en 256 niveaux de gris(toujours sur 24bi
probleme de pic [ par simour1 ]
bonsoir tout lemonde je suis un debutant en matiere de programmation j'arrive pas afaire ma premiere programmation sur le pic 16f84 j'utilise le prog
correction d'un code [ par marooh ]
bonjour,j'ai écrit un code assembleur qui permet de comparer deux tableaux,ce code je veux l'inserer dans un code c. si vous pouvez bien me le corrige
probleme en assembleur [ par keli1 ]
salut comment je peux comparer 2 tableaux de bits de meme taille en utilisant "ET" exemple comparer 100000 et 011100 je travaille avec le tasm merci
Impossible d'executer mon programme aprés la compilation (réussite) [ par kepon72 ]
Bonjour, Alors voila j'ai coder en asm un programme avec boite de dialogue je l'est compiler avec MASM32 en utilisant ce fichier .bat: [code=autre]@ec
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|