- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アセンブラからCの関数を呼び出すには?)
アセンブラからCの関数を呼び出す方法は?
このQ&Aのポイント
- 「OS自作入門」を読んで試しています。フロッピーのブートセクタに自作のブートプログラムを書き込み、ブートプログラムから自作のOSを呼び出して実行しています。アセンブラでのプログラム作成はきついので、C言語で書きたいと思っています。具体的には、自作のOSからCで書いた関数を呼び出して実行したいです。どのようにすればいいでしょうか?
- 質問者は「OS自作入門」を読みながら、自作のブートプログラムからOSを呼び出して実行しています。しかし、プログラム作成にアセンブラを使うのは難しいため、C言語で書きたいと思っています。具体的には、自作のOSからCで書いた関数を呼び出したいです。どのような方法で実現できるでしょうか?
- 「OS自作入門」を読んでいる質問者は、自作のブートプログラムを使ってOSを呼び出して実行しています。しかし、アセンブラでプログラムを書くことは難しいため、C言語を使いたいと考えています。具体的には、自作のOSからCで書いた関数を呼び出して実行したいです。どのような方法を取ればよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Cコンパイラ(の出すオブジェクト)の都合に合わせて,os.asm側を合わせる必要があるでしょう. Cでの関数名とアセンブラでの名前は違います.前にアンダーラインがつくのがUNIX系では定番ですが,ご使用のコンパイラでどうなるか調べる必要があります. あと,引数の受け渡しも,Cの呼び出しシーケンスを調べてそれに合わせる必要があります. (2)は,リンカーを使います. どっちかといえば, ・最低限のスタートアップルーチンだけをかいて速やかにCで書いたコードに制御を移す. ・必要な部分はアセンブラで書いて,Cからアセンブラコードを呼び出す というスタイルの方が楽だと思いますよ.