🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #9736

Re: CC probleem..

#9736
From: Andy Georges
Date: Wed, 10 Apr 2002 08:51
54 lines
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-mail
References: <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