cc1が生成したアセンブリコード(hello.s)を用いて、asがアセンブルとオブジェクトコード生成を行います。比較のために、cc1が生成したアセンブリコード(hello.s)と、asが生成したオブジェクトコード(objdumpを用いて逆アセンブルしたもの:hello.o)を以下に示します。<hello.s>生成されたオブジェクトコードのなかで、push $0x0や<main+0x9>などという相対番地指定されている箇所がありますが、これは後述するリンカによって、実行モジュールとなるべきスタートアップルーチン(/lib/crt[01n].o)などとリンクされることによって、モジュール中でのアロケーションが決定されます(再配置可能オブジェクトと呼ばれる)。
↓
[アセンブル、オブジェクトコード生成:as]
↓
<hello.o>(「objdump -d hello.o」で表示)
hello.o: file format elf32-i386 Disassembly of section .text: 00000000 <main>: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 68 00 00 00 00 push $0x0 8: e8 fc ff ff ff call 9 <main+0x9> d: c9 leave e: c3 ret