Необходимо сгенерировать ассемблерный код для структур и переменных

Мне нужно понять некоторые внутренности структур данных, сгенерировав ассемблерный код для функций и глобальных, локальных структур, переменных.

Из этой ссылки:

http://axelio.wordpress.com/2007/07/24/be-careful-with-packed-structures/

Я вижу, что члены структуры явно показывают выделенный размер в ассемблерном коде.

_my:
    .byte   10  <--- c
    .long   20  <--- i
    .byte   30  <--- s.c
    .space 3    <--- 3 bytes of alignment
    .long   40  <--- s.i

Как сгенерировать такую ​​сборку. С использованием

# gcc -S  file.c 

не генерировал вышеуказанный вывод для структур.


person Ashoka K    schedule 01.02.2013    source источник


Ответы (1)


Оно делает.

struct S
{
  int x;
  float y;
};

struct S t = {
  .x = 10,
  .y = 1.0
};

Компилировать с gcc -S strasm.c

И в результате strasm.s вы увидите:

  .data
  .type t, @object
  .size t, 8
t:
  .long 10
  .long 1065353216

Все, что вам нужно, это явно инициализированный объект.

person Konstantin Vladimirov    schedule 01.02.2013
comment
Да, я не инициализировал объект. - person Ashoka K; 02.02.2013