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
[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 ASSEMBLEURASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|