int add(int a, int b) {コンパイルしてバイナリを生成します。ここでは例として powerpc-elf を指定します。
return a + b;
}
$ powerpc-elf-gcc -nostdlib -g -O add.c※ 警告は無視します。
/opt/cross/lib/gcc/powerpc-elf/4.6.4/../../../../powerpc-elf/bin/ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 0000000001800054 を使用します
$ powerpc-elf-objdump -S a.out引数が`r3`と`r4`で渡されて、戻り値は`r3`で返される様子が読み取れます。
a.out: ファイル形式 elf32-powerpc
セクション .text の逆アセンブル:
01800054 <add>:
int add(int a, int b) {
return a + b;
}
1800054: 7c 63 22 14 add r3,r3,r4
1800058: 4e 80 00 20 blr
$ v850-elf-gcc -nostdlib -mno-prolog-function -O -g add.ctilegx, tilepro では -nostdinc を追加します。
/usr/lib/gcc/../../v850-elf/bin/ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 00100000 を使用します
$ tilegx-elf-gcc -nostdlib -nostdinc -O -g add.cia64, microblaze, rl78 ではリンカを分けて呼びます。
/usr/lib/gcc/../../tilegx-elf/bin/ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 00000000000100e8 を使用します
$ tilepro-elf-gcc -nostdlib -nostdinc -O -g add.c
/usr/lib/gcc/../../tilepro-elf/bin/ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 00010098 を使用します
$ ia64-elf-gcc -c -O -g add.c
/tmp/ccfPnyQU.s: Assembler messages:
/tmp/ccfPnyQU.s:19: Warning: Explicit stops are ignored in auto mode
$ ia64-elf-ld add.o
ia64-elf-ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 40000000000000b0 を使用します
$ microblaze-elf-gcc -c -O -g add.c
$ microblaze-elf-ld add.o
microblaze-elf-ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 00000050 を使用します
$ rl78-elf-gcc -c -O -g add.c
$ rl78-elf-ld add.o
rl78-elf-ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 00000000 を使用します