AIと戦って、あなたの人生のリスク診断 >>

様々なプログラミング言語をWindowsで実行する場合、コンパイラやインタプリタはWindowsAPIを呼び出してソースコードをマシン語に変換していると思いますが、

疑問なのは、それらコンパイラやインタプリタはMicrosoftによって作られているわけではないのに、なぜWindowsAPIを呼び出せるのかわかりません。

私自身もはっきりしないまま質問しています、申し訳ないですが教えてほしいです。

A 回答 (4件)

> コンパイラのBootstrap問題


コンパイラ自体はソースプログラム(テキストファイル)を読み込んで実行プログラム(バイナリファイル)に変換するだけのものなので、別のマシン上でも動きます。コンパイラの動作する環境と、コンパイラが生成したコードが動作する環境が異なるこのようなコンパイラをクロスコンパイラと言います。
マシン語自体はIntel CPUに依存するものでWindowsは関係ないですし、Windows APIも公開されたものなので、Windowsターゲットのクロスコンパイラ自体は誰でも作れます。もちろんWindows上で動くコンパイラも。実際GCCとかWindows版の出てますしね。
昔はソフトウェア開発環境はUNIXマシンとかだったのでUNIX上で動くWindows用コンパイラもあったと思いますが、その辺は詳しく知りません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

回答頂いたことが理解できるようにしたいと思います。

お礼日時:2019/10/20 14:12

Windows APIというのはもともとサードパーティ(マイクロソフト以外のソフトウェアベンダーなど)がWindowsの機能を呼び出すためにあるものです。

呼び出せないなら存在意義がないですね。
あとソースコードをマシン語に変換するのはコンパイラの機能であってWindows APIは関係ないです。そりゃソースファイルを読み込んだりマシン語ファイルを書き込んだりするのにファイル読み書きのAPIは使いますけどね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

3名の方の回答を見ていて、自分が悩んでいるのはコンパイラのBootstrap問題なのかと思うようになってきました。

お礼日時:2019/10/20 11:02

まず、ソースコードをマシン語に変換するのに、WindowsAPIは無関係です。



ファイルを読み書きするのはWindowsの機能なので、ソースファイルを読んだり、オブジェクトファイルを書いたりするには、最終的にはWindowsAPIが呼び出されます。
ただ、言語処理系はCやC++で書いてあることが多いですが、言語処理系のソース自体はCなどの標準関数をつかっていて、Cの実行時ライブラリがWindowsAPIを呼び出していたりします。

そもそも、WindowsAPIは、仕様が公開されているので、自分でWindowsAPIを呼び出すプログラムを書くことは可能です。
    • good
    • 0
この回答へのお礼

はい、WindowsAPIのソース自体は見たことがありますが、なぜそのソースコードをマシン語に変換する方法を知っており、OSに実行させる実行ファイルに変換できるのか、というような疑問なのです。
サードパーティーベンダーでも最初の一回はVisual studioでコンパイルするのでしょうか。

ありがとうございます。

お礼日時:2019/10/20 11:00

インタプリタは「ソースコードをマシン語に変換」することを必要としないけどね.



WindowsAPI の呼び出し方は公開されている. どこで悩んでいるのか知らんけど.
    • good
    • 0
この回答へのお礼

インタプリタについては実行ファイルを作成しないとは知っていましたが、マシン語にも変換しないとは知りませんでした。

調べてみます、ありがとうございます。

お礼日時:2019/10/20 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング