🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4998

Re: caller-save vs. callee-save registers

#4998
From: Bart Vandewoestyne
Date: Sun, 08 Jun 2003 20:52
51 lines
3811 bytes
Nicolas Barbier wrote:
>
>>"If local variabele b is live across more than one procedure call, is
>>it kept in a callee-save register?  Explain how doing this would speed
>>up the following program:"
> 
> Deze vraag is nogal dubbelzinnig, betekent "doing this" in de laatste vraag 
> "wat je doet volgens het antwoord op de eerste vraag" of "als het antwoord 
> op de eerste vraag ja is"?

Inderdaad... dubbelzinnigheid alom... bemerk dat ik dus die vraag wel 
degelijk NIET zelf heb geformuleerd he :-)

> Ik zal hier eens even mijn ad hoc aangeleerde compiler-kennis gaan 
> bovenhalen ;-) :
> 
> Welke van deze twee het beste resultaat gaat opleveren hangt af van hoeveel 
> registers die "several functions calls" nodig hebben. Als die ooit het 
> callee-save register gaan storen, dan had je het even goed zelf kunnen doen 
> (dan doe je het gegarandeerd maar 1 keer) (en je stopt het dus in een 
> caller-save register), maar als ze het nooit nodig hebben, dan bespaar je 
> de store als je het in een callee-save register stopt.
> 
> Maw: gebruiken de opgeroepen functies weinig registers, stop je gegevens 
> dan in callee-save registers. Anders stop je ze in caller-save registers, 
> en je store't ze voordat je de functies oproept.
> 
> Als je niet aan "interprocedural" optimalisatie kan doen (omdat je de code 
> van de opgeroepen functies niet bij de hand hebt, bv omdat ze in een andere 
> compilatie-unit zitten), veronderstel ik dat de meeste compilers gaan 
> aannemen dat de opgeroepen functies veel registers gebruiken en daarom zo 
> veel mogelijk live variabelen in caller-save registers gaan stoppen.

Inderdaad, dat zal het zijn!  Aan de hand van een mailtje naar een 
vriend kwam ik zo ook ongeveer tot die conclusie.  Alles zal dus 
inderdaad afhangen van de callees... als deze het register van b niet 
blijken nodig te hebben omdat ze heel weinig registers gebruiken, dan 
kan je die b in een callee-save register stoppen en dan de callees toch 
geen store/fetch-werk laten doen omdat ze het reg van b toch niet nodig 
hebben.

Blijkt echter dat het register van b ook zal nodig zijn voor de callees, 
dan zet je b denk ik ook best in een caller-save register, al zal het 
wschl niet veel verschil uitmaken dan...

Ma ik had dus in mijn redenering niet gedacht aan de 'hoeveelheid' 
registers die de callees eventueel kunnen nodig hebben.  Bedankt om me 
daar op te wijzen!

Greetzzz,
mc303
Technical Details
Message-ID: <3EE3A20D.60600@pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-01!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!proxad.net!nerim.net!aotearoa.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail
References: <3EE3920E.6214CC7A@pandora.be> <3ee39eb1$0$6523$afc38c87@sisyphus.news.be.easynet.net>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,cf0ff94794bfc79f
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-06-08 13:52:32 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-01!sn-xit-08!supernews.com!news.tele.dk!news.tele.dk!small.news.tele.dk!proxad.net!nerim.net!aotearoa.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail
From: Bart Vandewoestyne <Bart.VandewoestyneNOSPAM@pandora.be>
Newsgroups: be.comp.programming
Subject: Re: caller-save vs. callee-save registers
Date: Sun, 08 Jun 2003 22:52:29 +0200
Organization: KULeuvenNet
Lines: 52
Message-ID: <3EE3A20D.60600@pandora.be>
References: <3EE3920E.6214CC7A@pandora.be> <3ee39eb1$0$6523$afc38c87@sisyphus.news.be.easynet.net>
NNTP-Posting-Host: seven.kulnet.kuleuven.ac.be
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-Trace: naxos.belnet.be 1055105550 23266 134.58.127.12 (8 Jun 2003 20:52:30 GMT)
X-Complaints-To: abuse@belnet.be
NNTP-Posting-Date: Sun, 8 Jun 2003 20:52:30 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; WinNT; en; rv:1.0.2) Gecko/20030311 Beonex/0.8.2-stable
X-Accept-Language: en-us, en
Cache-Post-Path: seven.kulnet.kuleuven.ac.be!unknown@localhost
X-Cache: nntpcache 2.4.0b5 (see http://www.nntpcache.org/)