/* test.c */
#include <stdio.h>
 
int main() {
    printf("%s", "Hello World");
    return 0;
}

進行預處理:gcc -E test.c -o test.i 預處理即是將各種 macro、define 等等給展開,所以可以看到 test.i 當中直到最下面才出現原本 test.c 的內容,上面全部都是展開的結果。

/* test.i*/
 
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "test.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 33 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 461 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4
# 452 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 453 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 454 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 462 "/usr/include/features.h" 2 3 4
# 485 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4
 
 
 
 
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4
 
 
# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4
# 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4
# 486 "/usr/include/features.h" 2 3 4
# 34 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 2 3 4
# 28 "/usr/include/stdio.h" 2 3 4
 
 
 
 
 
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 209 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
 
# 209 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 34 "/usr/include/stdio.h" 2 3 4
 
 
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 1 3 4
# 40 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 37 "/usr/include/stdio.h" 2 3 4
 
# 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4
# 19 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 20 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
 
 
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
 
 
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
 
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
 
 
 
 
 
 
typedef __int8_t __int_least8_t;
typedef __uint8_t __uint_least8_t;
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
typedef __int64_t __int_least64_t;
typedef __uint64_t __uint_least64_t;
 
 
 
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
 
 
 
 
 
 
 
typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
# 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4
# 142 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/time64.h" 1 3 4
# 143 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
 
 
typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
 
typedef int __daddr_t;
typedef int __key_t;
 
 
typedef int __clockid_t;
 
 
typedef void * __timer_t;
 
 
typedef int __blksize_t;
 
 
 
 
typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;
 
 
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;
 
 
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;
 
 
typedef long int __fsword_t;
 
typedef long int __ssize_t;
 
 
typedef long int __syscall_slong_t;
 
typedef unsigned long int __syscall_ulong_t;
 
 
 
typedef __off64_t __loff_t;
typedef char *__caddr_t;
 
 
typedef long int __intptr_t;
 
 
typedef unsigned int __socklen_t;
 
 
 
 
typedef int __sig_atomic_t;
# 39 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4
 
 
 
 
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4
# 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4
typedef struct
{
  int __count;
  union
  {
    unsigned int __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 6 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 2 3 4
 
 
 
 
typedef struct _G_fpos_t
{
  __off_t __pos;
  __mbstate_t __state;
} __fpos_t;
# 40 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4
# 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4
typedef struct _G_fpos64_t
{
  __off64_t __pos;
  __mbstate_t __state;
} __fpos64_t;
# 41 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4
 
 
 
struct _IO_FILE;
typedef struct _IO_FILE __FILE;
# 42 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4
 
 
 
struct _IO_FILE;
 
 
typedef struct _IO_FILE FILE;
# 43 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4
struct _IO_FILE;
struct _IO_marker;
struct _IO_codecvt;
struct _IO_wide_data;
 
 
 
 
typedef void _IO_lock_t;
 
 
 
 
 
struct _IO_FILE
{
  int _flags;
 
 
  char *_IO_read_ptr;
  char *_IO_read_end;
  char *_IO_read_base;
  char *_IO_write_base;
  char *_IO_write_ptr;
  char *_IO_write_end;
  char *_IO_buf_base;
  char *_IO_buf_end;
 
 
  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;
 
  struct _IO_marker *_markers;
 
  struct _IO_FILE *_chain;
 
  int _fileno;
  int _flags2;
  __off_t _old_offset;
 
 
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];
 
  _IO_lock_t *_lock;
 
 
 
 
 
 
 
  __off64_t _offset;
 
  struct _IO_codecvt *_codecvt;
  struct _IO_wide_data *_wide_data;
  struct _IO_FILE *_freeres_list;
  void *_freeres_buf;
  size_t __pad5;
  int _mode;
 
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
# 44 "/usr/include/stdio.h" 2 3 4
# 52 "/usr/include/stdio.h" 3 4
typedef __gnuc_va_list va_list;
# 63 "/usr/include/stdio.h" 3 4
typedef __off_t off_t;
# 77 "/usr/include/stdio.h" 3 4
typedef __ssize_t ssize_t;
 
 
 
 
 
 
typedef __fpos_t fpos_t;
# 133 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4
# 134 "/usr/include/stdio.h" 2 3 4
 
 
 
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
 
 
 
 
 
 
extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
 
extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
extern int renameat (int __oldfd, const char *__old, int __newfd,
       const char *__new) __attribute__ ((__nothrow__ , __leaf__));
# 173 "/usr/include/stdio.h" 3 4
extern FILE *tmpfile (void) ;
# 187 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
 
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
# 204 "/usr/include/stdio.h" 3 4
extern char *tempnam (const char *__dir, const char *__pfx)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;
 
 
 
 
 
 
 
extern int fclose (FILE *__stream);
 
 
 
 
extern int fflush (FILE *__stream);
# 227 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 246 "/usr/include/stdio.h" 3 4
extern FILE *fopen (const char *__restrict __filename,
      const char *__restrict __modes) ;
 
 
 
 
extern FILE *freopen (const char *__restrict __filename,
        const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 279 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;
# 292 "/usr/include/stdio.h" 3 4
extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
  __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
 
extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
 
 
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
 
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
         size_t __size) __attribute__ ((__nothrow__ , __leaf__));
 
 
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
 
 
 
 
extern int fprintf (FILE *__restrict __stream,
      const char *__restrict __format, ...);
 
 
 
 
extern int printf (const char *__restrict __format, ...);
 
extern int sprintf (char *__restrict __s,
      const char *__restrict __format, ...) __attribute__ ((__nothrow__));
 
 
 
 
 
extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg);
 
 
 
 
extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
 
extern int vsprintf (char *__restrict __s, const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));
 
 
 
extern int snprintf (char *__restrict __s, size_t __maxlen,
       const char *__restrict __format, ...)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
 
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
        const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
# 379 "/usr/include/stdio.h" 3 4
extern int vdprintf (int __fd, const char *__restrict __fmt,
       __gnuc_va_list __arg)
     __attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
     __attribute__ ((__format__ (__printf__, 2, 3)));
 
 
 
 
 
 
 
extern int fscanf (FILE *__restrict __stream,
     const char *__restrict __format, ...) ;
 
 
 
 
extern int scanf (const char *__restrict __format, ...) ;
 
extern int sscanf (const char *__restrict __s,
     const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
 
 
 
extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
 
                               ;
extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
                              ;
extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))
 
                      ;
# 432 "/usr/include/stdio.h" 3 4
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
      __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
 
 
 
 
 
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
 
 
extern int vsscanf (const char *__restrict __s,
      const char *__restrict __format, __gnuc_va_list __arg)
     __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
 
 
 
 
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
 
 
 
     __attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
 
     __attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))
 
 
 
     __attribute__ ((__format__ (__scanf__, 2, 0)));
# 485 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
 
 
 
 
 
extern int getchar (void);
 
 
 
 
 
 
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 510 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
# 521 "/usr/include/stdio.h" 3 4
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
 
 
 
 
 
extern int putchar (int __c);
# 537 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);
 
 
 
 
 
 
 
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
 
 
 
 
 
 
extern int getw (FILE *__stream);
 
 
extern int putw (int __w, FILE *__stream);
 
 
 
 
 
 
 
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;
# 603 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
                             size_t *__restrict __n, int __delimiter,
                             FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
                           size_t *__restrict __n, int __delimiter,
                           FILE *__restrict __stream) ;
 
 
 
 
 
 
 
extern __ssize_t getline (char **__restrict __lineptr,
                          size_t *__restrict __n,
                          FILE *__restrict __stream) ;
 
 
 
 
 
 
 
extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
 
 
 
 
 
extern int puts (const char *__s);
 
 
 
 
 
 
extern int ungetc (int __c, FILE *__stream);
 
 
 
 
 
 
extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;
 
 
 
 
extern size_t fwrite (const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s);
# 673 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
         size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
          size_t __n, FILE *__restrict __stream);
 
 
 
 
 
 
 
extern int fseek (FILE *__stream, long int __off, int __whence);
 
 
 
 
extern long int ftell (FILE *__stream) ;
 
 
 
 
extern void rewind (FILE *__stream);
# 707 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);
 
 
 
 
extern __off_t ftello (FILE *__stream) ;
# 731 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
 
 
 
 
extern int fsetpos (FILE *__stream, const fpos_t *__pos);
# 757 "/usr/include/stdio.h" 3 4
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
 
extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
 
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
 
 
 
 
extern void perror (const char *__s);
 
 
 
 
 
# 1 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern const char *const sys_errlist[];
# 782 "/usr/include/stdio.h" 2 3 4
 
 
 
 
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
 
 
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
# 800 "/usr/include/stdio.h" 3 4
extern FILE *popen (const char *__command, const char *__modes) ;
 
 
 
 
 
extern int pclose (FILE *__stream);
 
 
 
 
 
extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));
# 840 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
 
 
 
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
 
 
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 858 "/usr/include/stdio.h" 3 4
extern int __uflow (FILE *);
extern int __overflow (FILE *, int);
# 873 "/usr/include/stdio.h" 3 4
 
# 2 "test.c" 2
 
 
# 3 "test.c"
int main() {
    printf("%s", "Hello World");
    return 0;
}
 

進行編譯得到 assembly file:gcc -S test.i -o test.s

	.arch armv8-a
	.file	"test.c"
	.text
	.section	.rodata
	.align	3
.LC0:
	.string	"Hello World"
	.align	3
.LC1:
	.string	"%s"
	.text
	.align	2
	.global	main
	.type	main, %function
main:
.LFB0:
	.cfi_startproc
	stp	x29, x30, [sp, -16]!
	.cfi_def_cfa_offset 16
	.cfi_offset 29, -16
	.cfi_offset 30, -8
	mov	x29, sp
	adrp	x0, .LC0
	add	x1, x0, :lo12:.LC0
	adrp	x0, .LC1
	add	x0, x0, :lo12:.LC1
	bl	printf
	mov	w0, 0
	ldp	x29, x30, [sp], 16
	.cfi_restore 30
	.cfi_restore 29
	.cfi_def_cfa_offset 0
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
 

進行彙編,將組合語言彙編成機器語言,得到 object file:gcc -c test.s -o test.o

parallels@ubuntu-linux-20-04-desktop:~/C_playground$ objdump -h test.o
 
test.o:     file format elf64-littleaarch64
 
Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .text         00000028  0000000000000000  0000000000000000  00000040  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         00000000  0000000000000000  0000000000000000  00000068  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  0000000000000000  0000000000000000  00000068  2**0
                  ALLOC
  3 .rodata       00000013  0000000000000000  0000000000000000  00000068  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .comment      0000002c  0000000000000000  0000000000000000  0000007b  2**0
                  CONTENTS, READONLY
  5 .note.GNU-stack 00000000  0000000000000000  0000000000000000  000000a7  2**0
                  CONTENTS, READONLY
  6 .eh_frame     00000038  0000000000000000  0000000000000000  000000a8  2**3
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
parallels@ubuntu-linux-20-04-desktop:~/C_playground$ hexdump test.o
0000000 457f 464c 0102 0001 0000 0000 0000 0000
0000010 0001 00b7 0001 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0348 0000 0000 0000
0000030 0000 0000 0040 0000 0000 0040 000d 000c
0000040 7bfd a9bf 03fd 9100 0000 9000 0001 9100
0000050 0000 9000 0000 9100 0000 9400 0000 5280
0000060 7bfd a8c1 03c0 d65f 6548 6c6c 206f 6f57
0000070 6c72 0064 0000 0000 7325 0000 4347 3a43
0000080 2820 6255 6e75 7574 3920 342e 302e 312d
0000090 6275 6e75 7574 7e31 3032 302e 2e34 2931
00000a0 3920 342e 302e 0000 0010 0000 0000 0000
00000b0 7a01 0052 7804 011e 0c1b 001f 0020 0000
00000c0 0018 0000 0000 0000 0028 0000 4100 100e
00000d0 029d 019e de48 0edd 0000 0000 0000 0000
00000e0 0000 0000 0000 0000 0000 0000 0000 0000
00000f0 0000 0000 0000 0000 0001 0000 0004 fff1
0000100 0000 0000 0000 0000 0000 0000 0000 0000
0000110 0000 0000 0003 0001 0000 0000 0000 0000
0000120 0000 0000 0000 0000 0000 0000 0003 0003
0000130 0000 0000 0000 0000 0000 0000 0000 0000
0000140 0000 0000 0003 0004 0000 0000 0000 0000
0000150 0000 0000 0000 0000 0000 0000 0003 0005
0000160 0000 0000 0000 0000 0000 0000 0000 0000
0000170 0008 0000 0000 0005 0000 0000 0000 0000
0000180 0000 0000 0000 0000 000b 0000 0000 0001
0000190 0000 0000 0000 0000 0000 0000 0000 0000
00001a0 0000 0000 0003 0007 0000 0000 0000 0000
00001b0 0000 0000 0000 0000 0008 0000 0000 0008
00001c0 0014 0000 0000 0000 0000 0000 0000 0000
00001d0 0000 0000 0003 0008 0000 0000 0000 0000
00001e0 0000 0000 0000 0000 0000 0000 0003 0006
00001f0 0000 0000 0000 0000 0000 0000 0000 0000
0000200 000e 0000 0012 0001 0000 0000 0000 0000
0000210 0028 0000 0000 0000 0013 0000 0010 0000
0000220 0000 0000 0000 0000 0000 0000 0000 0000
0000230 7400 7365 2e74 0063 6424 2400 0078 616d
0000240 6e69 7000 6972 746e 0066 0000 0000 0000
0000250 0008 0000 0000 0000 0113 0000 0005 0000
0000260 0000 0000 0000 0000 000c 0000 0000 0000
0000270 0115 0000 0005 0000 0000 0000 0000 0000
0000280 0010 0000 0000 0000 0113 0000 0005 0000
0000290 0010 0000 0000 0000 0014 0000 0000 0000
00002a0 0115 0000 0005 0000 0010 0000 0000 0000
00002b0 0018 0000 0000 0000 011b 0000 000d 0000
00002c0 0000 0000 0000 0000 001c 0000 0000 0000
00002d0 0105 0000 0002 0000 0000 0000 0000 0000
00002e0 2e00 7973 746d 6261 2e00 7473 7472 6261
00002f0 2e00 6873 7473 7472 6261 2e00 6572 616c
0000300 742e 7865 0074 642e 7461 0061 622e 7373
0000310 2e00 6f72 6164 6174 2e00 6f63 6d6d 6e65
0000320 0074 6e2e 746f 2e65 4e47 2d55 7473 6361
0000330 006b 722e 6c65 2e61 6865 665f 6172 656d
0000340 0000 0000 0000 0000 0000 0000 0000 0000
*
0000380 0000 0000 0000 0000 0020 0000 0001 0000
0000390 0006 0000 0000 0000 0000 0000 0000 0000
00003a0 0040 0000 0000 0000 0028 0000 0000 0000
00003b0 0000 0000 0000 0000 0004 0000 0000 0000
00003c0 0000 0000 0000 0000 001b 0000 0004 0000
00003d0 0040 0000 0000 0000 0000 0000 0000 0000
00003e0 0250 0000 0000 0000 0078 0000 0000 0000
00003f0 000a 0000 0001 0000 0008 0000 0000 0000
0000400 0018 0000 0000 0000 0026 0000 0001 0000
0000410 0003 0000 0000 0000 0000 0000 0000 0000
0000420 0068 0000 0000 0000 0000 0000 0000 0000
0000430 0000 0000 0000 0000 0001 0000 0000 0000
0000440 0000 0000 0000 0000 002c 0000 0008 0000
0000450 0003 0000 0000 0000 0000 0000 0000 0000
0000460 0068 0000 0000 0000 0000 0000 0000 0000
0000470 0000 0000 0000 0000 0001 0000 0000 0000
0000480 0000 0000 0000 0000 0031 0000 0001 0000
0000490 0002 0000 0000 0000 0000 0000 0000 0000
00004a0 0068 0000 0000 0000 0013 0000 0000 0000
00004b0 0000 0000 0000 0000 0008 0000 0000 0000
00004c0 0000 0000 0000 0000 0039 0000 0001 0000
00004d0 0030 0000 0000 0000 0000 0000 0000 0000
00004e0 007b 0000 0000 0000 002c 0000 0000 0000
00004f0 0000 0000 0000 0000 0001 0000 0000 0000
0000500 0001 0000 0000 0000 0042 0000 0001 0000
0000510 0000 0000 0000 0000 0000 0000 0000 0000
0000520 00a7 0000 0000 0000 0000 0000 0000 0000
0000530 0000 0000 0000 0000 0001 0000 0000 0000
0000540 0000 0000 0000 0000 0057 0000 0001 0000
0000550 0002 0000 0000 0000 0000 0000 0000 0000
0000560 00a8 0000 0000 0000 0038 0000 0000 0000
0000570 0000 0000 0000 0000 0008 0000 0000 0000
0000580 0000 0000 0000 0000 0052 0000 0004 0000
0000590 0040 0000 0000 0000 0000 0000 0000 0000
00005a0 02c8 0000 0000 0000 0018 0000 0000 0000
00005b0 000a 0000 0008 0000 0008 0000 0000 0000
00005c0 0018 0000 0000 0000 0001 0000 0002 0000
00005d0 0000 0000 0000 0000 0000 0000 0000 0000
00005e0 00e0 0000 0000 0000 0150 0000 0000 0000
00005f0 000b 0000 000c 0000 0008 0000 0000 0000
0000600 0018 0000 0000 0000 0009 0000 0003 0000
0000610 0000 0000 0000 0000 0000 0000 0000 0000
0000620 0230 0000 0000 0000 001a 0000 0000 0000
0000630 0000 0000 0000 0000 0001 0000 0000 0000
0000640 0000 0000 0000 0000 0011 0000 0003 0000
0000650 0000 0000 0000 0000 0000 0000 0000 0000
0000660 02e0 0000 0000 0000 0061 0000 0000 0000
0000670 0000 0000 0000 0000 0001 0000 0000 0000
*
0000688

彙編完之後還要進行連接(linking)。