ARM AARCH64打包结构的大小与32位不同

时间:2019-01-18 16:03:57

标签: c++

我有一些代码

#pragma pack(1) 
typedef struct Data 
{
   unsigned int a;
   unsigned int b;
   unsigned int c;
   char d[16];
  unsigned int f;
}Data;

void f()
{
   Data a;
   memset(&a, 0, sizeof(a));
   a.f =12;
}

当我使用aarch64_eabi_gcc aarch64-linux-gnu-g ++工具链编译上述代码并objdump目标代码时,我得到以下结果:

 ……
 move x2, #0x24
 mov w1, #0x0
 bl 0<memset>

这意味着数据的大小是36位长而不是32位长,为什么? 我的cpu是arm cortexa53

0 个答案:

没有答案