• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アセンブラからCの関数を呼び出すには?)

アセンブラからCの関数を呼び出す方法は?

このQ&Aのポイント
  • 「OS自作入門」を読んで試しています。フロッピーのブートセクタに自作のブートプログラムを書き込み、ブートプログラムから自作のOSを呼び出して実行しています。アセンブラでのプログラム作成はきついので、C言語で書きたいと思っています。具体的には、自作のOSからCで書いた関数を呼び出して実行したいです。どのようにすればいいでしょうか?
  • 質問者は「OS自作入門」を読みながら、自作のブートプログラムからOSを呼び出して実行しています。しかし、プログラム作成にアセンブラを使うのは難しいため、C言語で書きたいと思っています。具体的には、自作のOSからCで書いた関数を呼び出したいです。どのような方法で実現できるでしょうか?
  • 「OS自作入門」を読んでいる質問者は、自作のブートプログラムを使ってOSを呼び出して実行しています。しかし、アセンブラでプログラムを書くことは難しいため、C言語を使いたいと考えています。具体的には、自作のOSからCで書いた関数を呼び出して実行したいです。どのような方法を取ればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

Cコンパイラ(の出すオブジェクト)の都合に合わせて,os.asm側を合わせる必要があるでしょう. Cでの関数名とアセンブラでの名前は違います.前にアンダーラインがつくのがUNIX系では定番ですが,ご使用のコンパイラでどうなるか調べる必要があります. あと,引数の受け渡しも,Cの呼び出しシーケンスを調べてそれに合わせる必要があります. (2)は,リンカーを使います. どっちかといえば, ・最低限のスタートアップルーチンだけをかいて速やかにCで書いたコードに制御を移す. ・必要な部分はアセンブラで書いて,Cからアセンブラコードを呼び出す というスタイルの方が楽だと思いますよ.