#include <stdio.h>
int main()
 {
     printf("begin.\n");
     goto exit;
     printf("skip me!\n");
exit:
     printf("end\n");
 }
#if 0
某些情况下还必须使用这种语句
goto直接编译成了JMP。这两个指令的效果完全相同:无条件的转移到程序中的另一个地方继续执行后续命令。
只有在人工干预的情况下,例如使用调试器调整程序、或者对程序打补丁的情况下,程序才会调用第二个printf。
/*
  * dead code
  */
     第二次printf的代码称为"无用代码/dead code"。无用代码永远不会被执行。
     启用编译优化,会删除得干干净净。
 #endif
#if 0
 /*
  * intel
  */
 0000000000001149 <main>:
     1149:    f3 0f 1e fa              endbr64 
     114d:    55                       push   %rbp
     114e:    48 89 e5                 mov    %rsp,%rbp
     1151:    48 8d 3d ac 0e 00 00     lea    0xeac(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
     1158:    e8 f3 fe ff ff           callq  1050 <puts@plt>
     115d:    90                       nop
     115e:    f3 0f 1e fa              endbr64 
     1162:    48 8d 3d a2 0e 00 00     lea    0xea2(%rip),%rdi        # 200b <_IO_stdin_used+0xb>
     1169:    e8 e2 fe ff ff           callq  1050 <puts@plt>
     116e:    b8 00 00 00 00           mov    $0x0,%eax
     1173:    5d                       pop    %rbp
     1174:    c3                       retq   
     1175:    66 2e 0f 1f 84 00 00     nopw   %cs:0x0(%rax,%rax,1)
     117c:    00 00 00 
     117f:    90                       nop
/*
  * arm
  */
 000000000040055c <main>:
   40055c:    a9bf7bfd     stp    x29, x30, [sp, #-16]!
   400560:    910003fd     mov    x29, sp
   400564:    90000000     adrp    x0, 400000 <_init-0x3e8>
   400568:    91190000     add    x0, x0, #0x640
   40056c:    97ffffb9     bl    400450 <puts@plt>
   400570:    d503201f     nop
   400574:    90000000     adrp    x0, 400000 <_init-0x3e8>
   400578:    91192000     add    x0, x0, #0x648
   40057c:    97ffffb5     bl    400450 <puts@plt>
   400580:    52800000     mov    w0, #0x0                       // #0
   400584:    a8c17bfd     ldp    x29, x30, [sp], #16
   400588:    d65f03c0     ret
   40058c:    00000000     .inst    0x00000000 ; undefined
 #endif