🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #15303

Re: probleem met structuur

#15303
From: Wim Dumon
Date: Tue, 17 Oct 2000 00:00
77 lines
3532 bytes
Matthijs wrote:
> 
> 
> Jaja, gaat een memcopy sneller met even aantallen bytes ofzo? Geen idee
> waarom. Past dan iets beter in een memory page? Worden pointers sneller
> berekend met een bepaalde offset?
> 

Voorbeeldje op een sparc (ik gebruik gcc):
Code gegenereerd voor een toekenning aan een int in een gealigneerde
struct:

.stabn 68,0,24,.LM7-main
.LM7:
        sethi %hi(-559038737),%o1
        or %o1,%lo(-559038737),%o0
        st %o0,[%fp-28]
(3 instructies)

Code gegenereerd voor een toekenning aan dezelfde int wanneer alignment
afgezet wordt:

.stabn 68,0,24,.LM7-main
.LM7:
        ld [%fp-32],%o0
        sethi %hi(-16777216),%o1
        and %o0,%o1,%o0
        sethi %hi(14593470),%o2
        or %o2,%lo(14593470),%o1
        or %o0,%o1,%o0
        st %o0,[%fp-32]
        ld [%fp-28],%o0
        sethi %hi(16777215),%o2
        or %o2,%lo(16777215),%o1
        and %o0,%o1,%o0
        sethi %hi(-285212672),%o1
        or %o0,%o1,%o0
        st %o0,[%fp-28]
(14 instructies)

disclaimer: ik ken geen sparc-asm, dit is een diff van de 2 gegenereerde
assembler files waarbij de ene struct packed is en de ander niet.

> >
> > > Is dit ANSI C (werkt het ook op een andere processor dan Intel-compatible)?
> >
> > Ja, dit mag (moet) volgens de ANSI standaard.
> > Ja, ook op andere processoren gebeurt dit.
> 
> Ik had het hier over het #pragma gegochel. Aangezien dit lijkt op machine
> code lijkt het me sterk dat dat in de ANSI standaard staat, maar ik heb
> hem nooit gelezen (ambtenaren-Engels bluh),

#pragma's zijn compilerzaken en niet gestandardiseerd

> >
> > Waarom maak je je zorgen om de grootte en de layout van je struct ?
> > Compilers zijn doorgaans de best geplaatste tools om daarover te
> > beslissen...
> 
> Zoals FB al zegt, het is belangrijk als je je struct naar een bestand
> wilt schrijven die uitwisselbaar moeten zijn met andere programma's of
> als je structs tussen libraries van verschillende compilers uitwisselt.
>

Maar je wil sowieso geen disk space verspillen met packed bytes en
pointers, en bovendien kan memory layout verschillen van compiler tot
compiler dus je moet in elk geval een file format vastleggen. En dan
hebben we het nog niet eens over big/little endianness van uw computer,
of willen we daar ook een compiler flag van maken ?

> In Delphi is dit ingebouwd maar wel op een makkelijkere manier:
> 
<snip>
Mooi mooi :) Pascal rules :)

Wim.
Technical Details
Message-ID: <39EC0F8D.E4FA51CD@easics.be>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <UljG5.29720$s31.471928@afrodite.telenet-ops.be> <3MlG5.19859$Z7.336199@nlnews00.chello.com> <A9mG5.31247$s31.493710@afrodite.telenet-ops.be> <MPG.14552ffc56413268989718@news.xs4all.nl> <39EB29AF.8AEC6FA7@easics.be> <MPG.14556fd677bb3e20989722@news.xs4all.nl>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,f57e95232f06f286
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,f57e95232f06f286
X-Google-Attributes: gidfcea4,public
From: Wim Dumon <wim@easics.be>
Subject: Re: probleem met structuur
Date: 2000/10/17
Message-ID: <39EC0F8D.E4FA51CD@easics.be>
X-Deja-AN: 682387928
Content-Transfer-Encoding: 7bit
References: <UljG5.29720$s31.471928@afrodite.telenet-ops.be> <3MlG5.19859$Z7.336199@nlnews00.chello.com> <A9mG5.31247$s31.493710@afrodite.telenet-ops.be> <MPG.14552ffc56413268989718@news.xs4all.nl> <39EB29AF.8AEC6FA7@easics.be> <MPG.14556fd677bb3e20989722@news.xs4all.nl>
X-Accept-Language: en
Content-Type: text/plain; charset=us-ascii
X-Complaints-To: abuse@Belgium.EU.net
X-Trace: nreader1.kpnqwest.net 971771790 193.74.198.7 (Tue, 17 Oct 2000 10:36:30 MET DST)
Organization: Easics nv, Leuven, Belgium, http://www.easics.com
MIME-Version: 1.0
NNTP-Posting-Date: Tue, 17 Oct 2000 10:36:30 MET DST
Newsgroups: be.comp.programming,nl.comp.programmeren