Mac で学ぶ Arm アーキテクチャ 1-1

実行したら 10 を返す

int main(void){
    return 10;
}

という C プログラムを

・intel Mac 向け

・M1 Mac 向け

にそれぞれアセンブラで「寸止め」コンパイルして出力させてみた。

Intel(x86_64)アーキテクチャ向け
M1(arm64)アーキテクチャ向け

すぐに気がつくのは

・レジスタの名称が全然違う

・M1 向けの方が若干すっきりしている

あたりだろう。

 

ところで、これを某所でネタにしたら「どうやってアセンブラ出力させたんですか?」という質問があった。
じゃあ、これ、クエスチョンにしますか。

Q1.1 C プログラム(ここでは test.c とします)を Mac 上で clang を使って
・x86_64 アーキテクチャ向け
・arm64 アーキテクチャ向け
にそれぞれアセンブラ出力(testx86.s と testarm.s)させるコマンドをそれぞれ作ってください。

ついでにこれも。

Q1.2 どちらのアーキテクチャでも良いが test.c の実行ファイル(test)を作成してください。
このとき実行ファイルを実行させても端末には何も表示されません。
この時の main 関数の返り値 10 を(ソースに手を加えずに)端末上に表示させるにはどのようなコマンドを用いたら良いでしょう?

解答は近いうちにアップします

解答はこちら

 

air-h-128k-il

 

クリックclose

“Mac で学ぶ Arm アーキテクチャ 1-1” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です