Article View: be.comp.programming
Article #9736Re: CC probleem..
From: Andy Georges
Date: Wed, 10 Apr 2002 08:51
Date: Wed, 10 Apr 2002 08:51
54 lines
2904 bytes
2904 bytes
Hello,
tweede poging, de newsserver hier heeft weer kuren. Duh.
> void test(int dimensie)
> {
> double v[dimensie];
> // rest vd body
> }
Ik denk dat het als volgt zit. Als je een array op deze manier wilt
declareren zal de grootte ervan at run time worden bepaald. Dit betekent
dat de compiler code moet aanmaken om tijdens de uitvoering voldoende
plaats te voorzien, ergens in het geheugen. Nu, daar er hier geen functies
worden gebruikt om plaats te alloceren, is de enige manier die de compiler
heeft, de plaats te voorzien op de stapel, dus niet op de hoop (zoals met
malloc of new gebeurt).
Ik denk dat de sun CC weigert om stapelruimte te alloceren als niet vooral
geweten is hoeveel plaats dat ding zal innemen (ik kan verkeerd zijn he),
terwijl gcc dat wel doet:
13 st %i0, [%fp+68]
14 mov %sp, %i1
15 ld [%fp+68], %i0
16 sll %i0, 3, %i0
17 add %i0, -8, %i0
18 add %i0, 8, %i0
19 add %i0, 7, %i0
20 srl %i0, 3, %i0
21 sll %i0, 3, %i0
22 sub %sp, %i0, %sp
23 mov %i1, %sp
24 ret
25 restore
Dit is de code (-S -O0) die door g++ wordt gegenereerd voor de bovenstaande
functie (zonder de rest van de body natuurlijk). iirc, zit dimensie in %i0
en er worden dimensie*8 bytes gealloceerd op de stapel. (lijn 22)
> g++ maakt hier geen probleem van.
> Ik hoop dat ik hier iets stom over het hoofd zie...
mvg,
Andy Georges
--
==========================================================================
Parallel Information Systems Group - Dept. ELIS - Ghent University
St. Pietersnieuwstraat 41, 9000 Ghent, Belgium
Phone: +32-9-264.33.67, Fax: +32-9-264.35.94
E-mail: andy.georges@elis.rug.ac.be
==========================================================================
Technical Details
Message-ID:
<a90uet$aat$1@inf6serv.rug.ac.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!supernews.com!news.airnews.net!cabal11.airnews.net!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.tpinternet.pl!news.man.poznan.pl!news.task.gda.pl!newsfeed.belnet.be!naxos.belnet.be!news.belnet.be!inf6serv.rug.ac.be!not-for-mailReferences:
<iuKs8.8678$Ze.2797@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,12673ae89a2effe0 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-04-10 02:00:13 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!supernews.com!news.airnews.net!cabal11.airnews.net!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.tpinternet.pl!news.man.poznan.pl!news.task.gda.pl!newsfeed.belnet.be!naxos.belnet.be!news.belnet.be!inf6serv.rug.ac.be!not-for-mail From: Andy Georges <andy.georges@elis.nospam.rug.ac.be> Newsgroups: be.comp.programming Subject: Re: CC probleem.. Date: Wed, 10 Apr 2002 10:51:41 +0200 Organization: RUG - ELIS Lines: 54 Message-ID: <a90uet$aat$1@inf6serv.rug.ac.be> References: <iuKs8.8678$Ze.2797@afrodite.telenet-ops.be> NNTP-Posting-Host: escher.elis.rug.ac.be Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit User-Agent: KNode/0.7.1