Groups | Search | Server Info | Login | Register


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

Re: Padding von Strukturen

From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.comp.lang.c
Subject Re: Padding von Strukturen
Date 2024-01-29 18:02 +0100
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>

Show all headers | 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