🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15644

Re: post/pre incrementations et bugs de compilos

#15644
From: Charlie Gordon
Date: Wed, 14 Sep 2005 10:17
47 lines
3789 bytes
"Antoine Leca" <root@localhost.invalid> wrote in message
news:dg3hhd$kuf$1@shakotay.alphanet.ch...
> En <news:mn.52367d59df2fc1aa.31483@laposte.net>, Pierre Maurette va
> escriure:
> > Je pense qu'il n'y a qu'une seule alternative: soit respecter les
> > conventions d'appel, soit d�velopper la fonction inline.
>
> Non. Les conventions d'appel ne sont pas forc�ment uniques, tu peux (et
> g�n�ralement tu as, pour des raisons de march� et de diff�renciations
> marketing) des extensions ou des options (#pragma) permettant de les
> modifier.
> De plus, si les conventions de passage sont par pile, en g�n�ral cela va
> cr�er une contrainte d'ordre partiel. Mais si les conventions utilisent les
> registres, cette contrainte dispara�t ; et les compilateurs actuels vont
> magouiller l'expression pour espacer le plus possible les interactions avec
> chaque espace de m�moire (y compris les registres), histoire de remplir tous
> les pipelines parall�les.

Ne m�lange pas les conventions d'appel et l'ordre d'�valuation des param�tres,
ceux-ci peuvent �tre �valu�s dans n'importe quel ordre, voire de facon
concommitante et les r�sultats sont ensuite mis sur la pile dans le bon ordre
pour respecter la convention d'appel.

Voici deux techniques possibles : les parametres peuvent etre evalu�s dans des
registres et ensuite les registres sont pouss�s sur la pile dans l'ordre
ad�quat.  Ou encore le pointeur de pile est ajust� et les parametres sont
evalu�s et mis sur la pile avec un mov dans l'ordre que le compilateur choisit
avec des crit�res hors du controle du programmeur.

Par exemple, l'excellent compilateur en une passe de Fabrice Bellard TinyCC (
http://tinycc.org ) genere le code des expressions arguments de fonction au vol
directement dans la phase de parse.  Ce code s'�x�cute donc en g�n�ral dans le
m�me ordre quelle que soit la convention d'appel, et la technique d�crite
ci-dessus est utilis�e pour que les param�tres soient dans le bon ordre, non
sans mal dans certains cas (listes d'arguments variables).

Se reposer sur une telle connaissance du compilateur pour �crire un code non
portable n'a d'int�r�t que pour le concepteur de compilateur ou de suites de
test, c'est une pratique � bannir pour le reste des programmeurs, qui seront
forc�ment punis un jour ou l'autre d'avoir pris de telles habitudes risqu�es.

De plus des cas simples comme fun(i++, i++) devraient �tre refus�s par le
compilateur qui devrait d�tecter le comportement ind�fini facilement
identifiable.

-- 
Chqrlie.
Technical Details
Message-ID: <dg8rse$ha3$1@reader1.imaginet.fr>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newspeer1.nwr.nac.net!colt.net!fr.colt.net!writer!not-for-mail
References: <43207e0a$0$162$a3f2974a@nnrp1.numericable.fr> <dfrnh7$j63$1@news.hispeed.ch> <dfrvtp$j9u$1@shakotay.alphanet.ch> <4321fb01$0$21296$7a628cd7@news.club-internet.fr> <mn.52367d59df2fc1aa.31483@laposte.net> <dg3hhd$kuf$1@shakotay.alphanet.ch>

Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,d07db62495be07f8
X-Google-Attributes: gidf9822,public
X-Google-Language: FRENCH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newspeer1.nwr.nac.net!colt.net!fr.colt.net!writer!not-for-mail
From: "Charlie Gordon" <news@chqrlie.org>
Newsgroups: fr.comp.lang.c
Subject: Re: post/pre incrementations et bugs de compilos
Date: Wed, 14 Sep 2005 12:17:11 +0200
Organization: ImagiNET / Colt Internet
Lines: 49
Message-ID: <dg8rse$ha3$1@reader1.imaginet.fr>
References: <43207e0a$0$162$a3f2974a@nnrp1.numericable.fr> <dfrnh7$j63$1@news.hispeed.ch> <dfrvtp$j9u$1@shakotay.alphanet.ch> <4321fb01$0$21296$7a628cd7@news.club-internet.fr> <mn.52367d59df2fc1aa.31483@laposte.net> <dg3hhd$kuf$1@shakotay.alphanet.ch>
NNTP-Posting-Host: gw.netgem.com
X-Trace: reader1.imaginet.fr 1126691534 17731 195.68.2.34 (14 Sep 2005 09:52:14 GMT)
X-Complaints-To: abuse@imaginet.fr
NNTP-Posting-Date: 14 Sep 2005 09:52:14 GMT
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1506
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1506