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
Probleme avec le serveur [ par TotalIllusion ]
jai poster ma source (un prog sur les ISR et le serveur veut pas mettre le .zip (isr.zip).sa a cree 3 message comme dequoi jaurrais poster 3 source et
projet assembleur [ par zipposou ]
Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran
projet assembleur [ par zipposou ]
Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran
HELP_HELP_HELP [ par zipposou ]
Salut a tousj'ai un enorme probleme, j'ai un projet à rendre en assembleur 68000, c en fait le jeu du serpent.Le probleme c que je ne connais pas gran
Question de débutant [ par Laurent1313 ]
Voilà je débute avec l'assembleur sous Delphi et il y a un truc que je ne comprends pas. Je voudrais juste savoir quelle est la différence entre :ça :
probleme de comprehension de jmp:( [ par SVKMrNice ]
yop le monde alors voila je suis debutant en asm... de temps en temps je regarde des progs en asm pour essayer de comprendre les techniques... mais vo
Différences ??? [ par Arecibo ]
Voila je debute en assembleur et j'aimerais savoir quelles sont les différences entre :-> mov eax, ebx et mov eax, [ebx]-> mov esi, eax et mov [esi],
Peut on comparer deux binaire avec cmp ? [ par MrNice ]
Lo le forum me revoila ave cun new prob...donc en fait g une table de variable, je prends al=0 je fait un xlat et je compare ce resultat avec une entr
probleme de cryptage avec la fonction crypt [ par kapes ]
j'ai un probleme avec la foncion crypt() de c.en effet, j'ai ecrit un programme c qui creer des comptes utilisateurs. A l'interieur de cette fonction
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|