2023年1月の記事一覧
C言語コンパイラ依存した話の続編「Visual Studio 2019 はどうコンパイルするのか」
最早、毒食らわば皿までといった心境です。
再び、この記事の続き。
前回は clang コンパイラについて解析しました。
ならば、 Visual Studio 2019 はどうなのか。
そういうことが気になる(笑)。
今回は、その Visual Studio 2019 のお話です。
※以下、VS = Visual Studio 2019 の意。
VS が出力したアセンブラ以下が、VS が出力
C言語コンパイラ依存した話の続編「clang はどうコンパイルするのか」
こちらの記事の延長戦です。
というわけで(どういうわけ?)、 clang コンパイラが吐き出したアセンブラを解析してみました。
結論から言うと、clang コンパイラの場合は次のようになります。
引数 i 、 j は三項演算する前に待避しておく。
「j--」(後置デクリメント)は、 j-- する前の値を別のレジスタに待避する。
まず、clang が出力したアセンブラを見てみます。スマホ版
C言語でコンパイラ依存した話
久しぶりでした。
コンパイラ依存。
コンパイラによって動作が変わることを言います。C言語では昔からありますが、私自身お目にかかったのは久しぶりです。
コードはこちらの記事のものです。
いつもC言語コードを書きあって楽しませていただいてます。
ちょっと、リンク先のコードを再掲させていただきます。
#define MAX(x,y) ((x) > (y) ? (x) : (y))int mai