Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.c > #10585

Re: Padding von Strukturen

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.comp.lang.c
Subject Re: Padding von Strukturen
Date Mon, 29 Jan 2024 18:02:12 +0100
Lines 42
Message-ID <up8p75.5k8.1@stefan.msgid.phost.de> (permalink)
References <AABls+L881gAAAIP.A3.flnews@WStation5.stz-e.de> <slrnur7ut6.1vogh.hjp-usenet4@trintignant.hjp.at> <AABlt6WrK-wAAAI9.A3.flnews@WStation5.stz-e.de>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
X-Trace individual.net 6iUXFKG4i7gcntxAVxjYLAi+9S05pFoSMjV5rMPn2dQ5dr6E49
Cancel-Lock sha1:MHgQQ6nCqlSzI7fJeV8PxTpfLMY= sha256:+NPv7vTDEU77C95MB8NcqhGJfTxhJUCT68I8Pai6SyA=
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 Hamster/2.1.0.1538
In-Reply-To <AABlt6WrK-wAAAI9.A3.flnews@WStation5.stz-e.de>
Xref csiph.com de.comp.lang.c:10585

Show key headers only | View raw


Am 29.01.2024 um 14:18 schrieb Michael Bäuerle:
> Peter J. Holzer wrote:
>> Prinzipiell könnte der Compiler immer Code erzeugen, der auf jedes Byte
>> einzeln zugreift, und hätte dann keine Alignment-Requirements. Das wäre
>> aber sehr ineffizient und für manche (hardware-nahen) Anwendungen könnte
>> man ihn gar nicht verwenden. Oder er könnte z.B. bei der x86-Architektur
>> (bei der unaligned Zugriffe von der Hardware erledigt werden und daher
>> nur ein bisschen langsamer sind) auf Alignment verzichten.
> 
> Mit GCC und gepackten Strukturen:
> ------------------------------------------------------------------------
> #include <stdlib.h>
> #include <stdio.h>
[...]
> Ergibt auf NetBSD/amd64:
> | 
> | sizeof (struct foo) : 10
> | sizeof bar          : 20
> | bar[1].y            : 4
> 
> Der Assembler-Code sieht gleich aus, wie zu erwarten war.
> GCC für SPARC müsste da verschiedenen Code erzeugen.

Probier's aus: https://gcc.godbolt.org/z/sP8GGzvza

Ich hab hiermit probiert:

    struct x {
        int a;
        char b;
    } __attribute__((packed));

    int get(struct x* p)
    {
        return p->a;
    }

Ja, für SPARC (oder RISC-V, ARM-V7, ...) stoppelt der gcc da den int aus
4 Einzel-Byte-Loads zusammen.


  Stefan

Back to de.comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Padding von Strukturen Michael Bäuerle <michael.baeuerle@stz-e.de> - 2024-01-26 17:51 +0100
  Re: Padding von Strukturen Claus Reibenstein <creibens@gmail.com> - 2024-01-26 18:41 +0100
  Re: Padding von Strukturen "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2024-01-26 19:36 +0100
    Re: Padding von Strukturen Michael Bäuerle <michael.baeuerle@stz-e.de> - 2024-01-29 14:18 +0100
      Re: Padding von Strukturen Stefan Reuther <stefan.news@arcor.de> - 2024-01-29 18:02 +0100
  Re: Padding von Strukturen Stefan Reuther <stefan.news@arcor.de> - 2024-01-27 11:25 +0100
    Re: Padding von Strukturen "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2024-01-27 12:21 +0100
      Re: Padding von Strukturen Michael Bäuerle <michael.baeuerle@stz-e.de> - 2024-01-29 14:23 +0100
  Re: Padding von Strukturen Bonita Montero <Bonita.Montero@gmail.com> - 2024-01-28 15:45 +0100
  Re: Padding von Strukturen Rainer Weikusat <rweikusat@talktalk.net> - 2024-01-30 16:06 +0000
    Re: Padding von Strukturen Bonita Montero <Bonita.Montero@gmail.com> - 2024-02-02 08:26 +0100
  Re: Padding von Strukturen Helmut Schellong <var@schellong.biz> - 2024-03-03 21:16 +0100
    Re: Padding von Strukturen Bonita Montero <Bonita.Montero@gmail.com> - 2024-04-22 09:53 +0200
      Re: Padding von Strukturen Helmut Schellong <var@schellong.biz> - 2024-04-23 19:11 +0200
        Re: Padding von Strukturen Bonita Montero <Bonita.Montero@gmail.com> - 2024-04-23 19:25 +0200
          Re: Padding von Strukturen Helmut Schellong <var@schellong.biz> - 2024-04-23 20:41 +0200

csiph-web