Reputation: 33
tools & platform: gcc-arm-none-eabi-4_9, cotrex-M4F
when I declaration const char
variables, the alignment of memory map seems likes difference between const char bb
and const char bb[1]
case A:
const char aa = 0;
const char bb = 1;
const char cc = 2;
.rodata.aa
0x0005dbb0 0x1 ./source/main.o
0x0005dbb0 aa
.rodata.bb
0x0005dbb1 0x1 ./source/main.o
0x0005dbb1 bb
.rodata.cc
0x0005dbb2 0x1 ./source/main.o
0x0005dbb2 cc
case B:
const char aa = 0;
const char bb[1] = {1};
const char cc = 2;
.rodata.aa
0x0005dbb0 0x1 ./source/main.o
0x0005dbb0 aa
*fill* 0x0005dbb1 0x3
.rodata.bb
0x0005dbb4 0x1 ./source/main.o //why align to 4 byte here?
0x0005dbb4 bb
.rodata.cc
0x0005dbb5 0x1 ./source/main.o
0x0005dbb5 cc
case C:
const char aa = 0;
const char bb[1] __attribute__ ((aligned (1))) = {1};
const char cc = 2;
.rodata.aa
0x0005dbb0 0x1 ./source/main.o
0x0005dbb0 aa
.rodata.bb
0x0005dbb1 0x1 ./source/main.o
0x0005dbb1 bb
.rodata.cc
0x0005dbb2 0x1 ./source/main.o
0x0005dbb2 cc
why, const char bb[1]
align to 4 byte ?
how to make const char bb[1]
align to 1 byte, like const char bb
Upvotes: 1
Views: 425