0

関数とグローバル、ローカル構造、変数のアセンブリ コードを生成することによって、データ構造の内部を理解する必要があります。

このリンクから:

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 

構造体の上記の出力を生成しませんでした。

4

1 に答える 1

0

します。

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

必要なのは、明示的に初期化されたオブジェクトだけです。

于 2013-02-01T13:17:36.600 に答える