2

OS に依存しない方法で文字列を出力しようとしています。たとえば、プログラムは Windows でも *nix と同じように実行する必要があります。

これは可能ですか?基礎となるアーキテクチャは同じ(x86)であるため、メソッドは同じであると想定しています。割り込みを呼び出すのと同じくらい簡単ですか?

この理由は、アセンブリ コードを生成するコンパイラを作成しようとしているためです。開発の初期段階では、ほんの一握りの機能しかありません。生成されたアセンブリ コードを Windows または Windows でテストできるようにしたいと考えています。または* nix。将来的には、同じコードを生成しながらプラットフォーム中立性を維持することは不可能になりますが、基本的にこの時点でやりたいことは、文字列を出力することだけです。

4

4 に答える 4

4

に対してリンクできますlibcか?それができれば、電話するだけで済むはずですprintf()。サンプル プログラムは、このリンクにあります。

于 2010-09-05T05:14:34.540 に答える
3

純粋なアセンブリは、オペレーティング システム間で移植可能と見なされるべきではありません。アセンブリからシステム サービスを操作する普遍的な方法はありません。Unix ライクな OS 間での移植性を想定することすらすべきではありません (POSIX では呼び出し規約が指定されていませんが、一部の x86 Unice では共通の規約が使用されています)。

より高水準の言語であっても、呼び出し規則は、まったく同じ CPU + OS 上のコンパイラごとに技術的に異なる場合がありますが、通常、コンパイラはホスト環境に指定されている規則を使用します。

ウィキペディアのx86 呼び出し規約に関するページも参照してください。

于 2010-09-05T05:27:05.183 に答える
1

これを行うには、 polyglotに似たものを書く必要があります。

于 2010-09-24T00:36:37.367 に答える
0

申し訳ありませんが、誰もJavaを育てていませんか?

于 2010-09-24T00:47:52.017 に答える