本物のC
標準規格(仕様)が C 言語をどういうものとして定めているか
C プログラムが実際に CPU をどう動かすか
を拝見した。2つ目の行は違和感がある。
C言語がどういうものかを理解するには、
未定義、未規定、処理系定義
cの精神(spirit of C)
freestanding, hosted
に注目するといいかも。
未定義、未規定、処理系定義
「標準規格が C 言語をどういうものとして定めているか」というと、「Cプログラムが実際にCPUをどう動かすか」定めていない。定めないことを定めているか、選択肢を与えるか、処理系の定義にまかせるということを決めている。
C言語:未定義、未規定、処理系定義
C言語(C++)の理解、溶解、爽快。仮説(173)
cの精神(spirit of C)
C99のRationleは本家にあり。
Rationale for International Standard— Programming Languages— C
• Trust the programmer.
• Don’t prevent the programmer from doing what needs to be done.
• Keep the language small and simple.
• Provide only one way to do an operation.
• Make it fast, even if it is not guaranteed to be portable.
freestanding, hosted
C言語は、OSがあるかどうかに関係なく動くfreestandingと、OSの存在を前提としてOSが動き始めてから動くhostedの2種類があります。
この2種類を説明すれば、C言語をどういうものとして定めているかを説明したことになります。
Hostedは、main関数から始めます。
Freestandingでは、起動関数名は任意です。
Freestandingの上に、OSを載せてもかまわないし、OSを載せないベアメタルとかいうプログラムでもいいのです。
ISO/IEC 9899: Programming languages — C
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2731.pdf
5.1.2.1 Freestanding environment
1 In a freestanding environment (in which C program execution may take place without any ben- efit of an operating system), the name and type of the function called at program startup are implementation-defined.
Freestandingのstartupの名前は処理系定義。
5.1.2.2 Hosted environment
5.1.2.2.1 Program startup
1 The function called at program startup is named main.
Hostedのstartupの名前はmain。
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
文書履歴(document history)
ver. 0.01 初稿 20220302
ver. 0.02 URL追記 20240413
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.