Zugriff Performance globale Variable vs global struct

Gast #2895913
Lesenswert?

Hallo,

eine kurze, vielleicht einfache Frage:
Ist der Zugriff auf auf v1 immer genau so schnell wie auf v2? Wenn ich 
den Assembler code für ARM9 / Cortex M3 anschau, dann scheint das der 
Fall zu sein. Aber gilt das allgemein?
1
typedef struct
2
{
3
  int v1;
4
}test_def;
5

6
test_def test;
7
int v2;
8

9
void main()
10
{
11
  test.v1 = 5;
12
  v2=6;
13
}

Gruß Alex
Gast #2908657
Lesenswert?

alex schrieb:
> Ist der Zugriff auf auf v1 immer genau so schnell wie auf v2? Wenn ich
> den Assembler code für ARM9 / Cortex M3 anschau, dann scheint das der
> Fall zu sein. Aber gilt das allgemein?

Ich wage zu behaupten, daß das von der verwendeten CPU und vom 
C-Compiler abhängt.
1
typedef struct
2
{
3
  int8_t x
4
  int32_t y;
5
}test_def;
mit 16 oder 32Bit CPU und
1
#pragma pack
-> Der Compiler müßte y an eine ungerade Adresse in der Struktur legen.
Sofern die CPU überhaupt 16/32Bit-Zugriffe auf ungerade Adressen 
erlaubt, würde der Zugriff auf y mehrere Buszyklen benötigen.
Wenn man einfach nur Variablen anlegt, kann der Compiler diese selber 
auf optimale Adressen legen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren