int main()
commite5e7f488e22190f893152c0b2f73e9ba499c4169
authorjiang <30155751@qq.com>
Sat, 17 May 2014 04:32:00 +0000 (17 12:32 +0800)
committerjiang <30155751@qq.com>
Sat, 17 May 2014 04:32:00 +0000 (17 12:32 +0800)
tree44a02b5ea1eb2464d6d7c0cb67bce68605473391
parenta94ed430945d5012bd5d3abee24ed75ecb73d07c
int main()
{
struct st {
int aa:16;
int bb:16;
} s;
s.aa = 1;
s.bb = 2;
return 0;
}
objdump -d:
elf64-x86-64
Disassembly of section .text:

0000000000000000 <main>:
   0: 55                    push   %rbp
   1: 48 89 e5              mov    %rsp,%rbp
   4: 48 81 ec 10 00 00 00  sub    $0x10,%rsp
   b: b8 01 00 00 00        mov    $0x1,%eax
  10: 48 89 c1              mov    %rax,%rcx
  13: 81 e1 ff ff 00 00     and    $0xffff,%ecx
  19: 8b 55 fc              mov    -0x4(%rbp),%edx
  1c: 81 e2 00 00 ff ff     and    $0xffff0000,%edx
  22: 09 d1                 or     %edx,%ecx
  24: 89 4d fc              mov    %ecx,-0x4(%rbp)
  27: b8 02 00 00 00        mov    $0x2,%eax
  2c: 48 89 c1              mov    %rax,%rcx
  2f: 81 e1 ff ff 00 00     and    $0xffff,%ecx
  35: c1 e1 10              shl    $0x10,%ecx
  38: 8b 55 fc              mov    -0x4(%rbp),%edx
  3b: 81 e2 ff ff 00 00     and    $0xffff,%edx
  41: 09 d1                 or     %edx,%ecx
  43: 89 4d fc              mov    %ecx,-0x4(%rbp)
  46: b8 00 00 00 00        mov    $0x0,%eax
  4b: e9 00 00 00 00        jmpq   50 <main+0x50>
  50: c9                    leaveq
  51: c3                    retq

After the patch

Disassembly of section .text:

0000000000000000 <main>:
   0: 55                    push   %rbp
   1: 48 89 e5              mov    %rsp,%rbp
   4: 48 81 ec 10 00 00 00  sub    $0x10,%rsp
   b: 8b 45 fc              mov    -0x4(%rbp),%eax
   e: 81 e0 00 00 ff ff     and    $0xffff0000,%eax
  14: 83 c8 01              or     $0x1,%eax
  17: 89 45 fc              mov    %eax,-0x4(%rbp)
  1a: 8b 45 fc              mov    -0x4(%rbp),%eax
  1d: 81 e0 ff ff 00 00     and    $0xffff,%eax
  23: 81 c8 00 00 02 00     or     $0x20000,%eax
  29: 89 45 fc              mov    %eax,-0x4(%rbp)
  2c: b8 00 00 00 00        mov    $0x0,%eax
  31: e9 00 00 00 00        jmpq   36 <main+0x36>
  36: c9                    leaveq
  37: c3                    retq
tccgen.c