実行したら 10 を返す
int main(void){
return 10;
}
という C プログラムを
・intel Mac 向け
・M1 Mac 向け
にそれぞれアセンブラで「寸止め」コンパイルして出力させてみた。


すぐに気がつくのは
・レジスタの名称が全然違う
・M1 向けの方が若干すっきりしている
あたりだろう。
ところで、これを某所でネタにしたら「どうやってアセンブラ出力させたんですか?」という質問があった。
じゃあ、これ、クエスチョンにしますか。
Q1.1 C プログラム(ここでは test.c とします)を Mac 上で clang を使って
・x86_64 アーキテクチャ向け
・arm64 アーキテクチャ向け
にそれぞれアセンブラ出力(testx86.s と testarm.s)させるコマンドをそれぞれ作ってください。
ついでにこれも。
Q1.2 どちらのアーキテクチャでも良いが test.c の実行ファイル(test)を作成してください。
このとき実行ファイルを実行させても端末には何も表示されません。
この時の main 関数の返り値 10 を(ソースに手を加えずに)端末上に表示させるにはどのようなコマンドを用いたら良いでしょう?
解答は近いうちにアップします。
解答はこちら。