yosuke_furukawa:はい。コンパイラはOS、CPUアーキテクチャに従ってバイナリを作成するので、ABIもOS、CPUアーキテクチャを想定しています。
例えばサブルーチンが呼び出される際に、引数をどうやって呼び出すか、一時的にレジスタに積むのか、それともスタックなのかといった低レベルでの決まり事がそれぞれのアーキテクチャに従って用意されています。この決まりごとの事を呼出規約と呼ばれています。
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E8%A6%8F%E7%B4%84
コンパイラは、これらのルールに従って関数の呼び出しコードを生成します。
また、OSがサポートする機能にも配慮する必要があります。たとえば、OSがシステムコールを介して提供する機能には、特定のレジスタやメモリアドレスが割り当てられている場合があります。コンパイラは、これらの機能を呼び出すために必要なコードを生成するために、これらのアドレスを知る必要があります。
コンパイラはこれらの決まり事を守って生成するので、内部の仕組みまで考慮していると言っていいと思います。