タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

programmingとOSに関するButterflyFishのブックマーク (2)

  • Cの可変長引数とABIの奇妙な関係 - Qiita

    printf に関する以下のツイートが流行っていました。 上のツイートでは割とあっさり説明されていますが、amd64 SysV ABIでこの現象が起こる理由にはもっと深遠なものがあると思うので、可変長引数とからめて説明してみたいと思います。 前提条件として「ABI」「可変長引数」「non-prototyped関数」の知識が必要なのでそこから説明します ABIとは ABI (Application Binary Interface) とは、機械語レベルでのインターフェースのことです。 機械語そのもののルールはISA (Instruction Set Architecture) によって規定されていますが、たとえばC言語の「関数呼び出し」などの概念を機械語でどのように表現するかについては規定していません。そのルールを定めたのがABIです。したがって、ISAとABIはおよそ1対多の関係にあります

    Cの可変長引数とABIの奇妙な関係 - Qiita
  • チュートリアル – システムコールの書き方 | プログラミング | POSTD

    しばらく前に私は、「 C言語でシェルを書く方法 」というタイトルで、皆さんが日常的に使っているツールの内部動作を理解するのに役立つチュートリアルを書きました。単純なシェルであっても、数例を挙げるだけでも read 、 fork 、 exec 、 wait 、 write それから chdir など多数のシステムコールが呼び出されていました。この探索に続く次なる旅として、今回はLinux環境においてシステムコールがどのように実装されているのかについて学んでいきましょう。 システムコールとは何か システムコールを実装するに当たって、それが何なのかをまずきちんと理解しておきましょう。そう遠くない昔の私がそうでしたが、素直なプログラマならシステムコールをCライブラリで提供されている関数のことだと定義するかもしれません。しかしこれは全く正しくありません。確かにCライブラリに含まれる関数群はシステムコ

    チュートリアル – システムコールの書き方 | プログラミング | POSTD
  • 1