アセンブラ関数をCからリンクする
http://homepage1.nifty.com/herumi/prog/prog10.html
を見てやってみる。
gas(linux)
リンカに拘ると前に進めない。
gas仕様のsum.Sを写経してリンクする。
$ gcc -c main.c $ as sum.S -o sum.o $ ld -o sum main.o sum.o -e main undefined reference to `atoi とか出る。 $ ld -o sum main.o sum.o -e main -lc $ ./sum zsh: そのようなファイルやディレクトリはありません: ./sum $ ld -o sum main.o sum.o -e main --dynamic-linker /lib/ld-linux.so.2 -lc $ ./sum zsh: segmentation fault ./sum
ここまでで頓挫。
今はリンカじゃなくてアセンブラをやっているということに妥協してすなおにgccを使う。
$ gcc -o sum main.o sum.o $ ./sum 1 2 1 + 2 = 3
いままで気にしていなかったがmainに至る道は複雑なのかもしれない。