問題タブ [i386]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
857 参照

assembly - x86_64 で i386 コードを組み立てる

次のコードは期待どおりに動作しません。

通り抜けたとき:

何も出力しません。行を変更すると:

それは正常に動作します。元のコードをコンパイルし--32 -march=i386てリンクしようとしました-m elf_i386が、まだ何も出力されません。

これは、メモリ モデルが i386 のようにフラットではないために発生すると推測されます。何とかこれをエミュレートできますか?

0 投票する
2 に答える
141 参照

linux - int と long の範囲はどちらも 4 バイトです。

long の 4 バイトが int よりも範囲が広いのはどのくらいですか? ソース: http://lwn.net/images/pdf/LDD3/ch11.pdf

0 投票する
1 に答える
558 参照

c - GNU リンカとアーキテクチャ i386

私は OS Xで実行していて、2 つの Mach-O オブジェクト i386 をリンクしたいと考えています。

1 つ目は NASM から生成されます (アセンブリ ファイルです)。

2番目はGCCから生成されます

しかし、それらをリンクしようとすると...

...次のエラーが表示されます:

私の2つのファイルはMach-O object i386次のとおりであるため、理由がわかりません。


必要な場合は、kernel.asmを次に示します。

そして、ここにscreen.cがあります:

0 投票する
1 に答える
1020 参照

linux - NASM に cat>fileName コマンドを実装する

cat>filenameシステムコールを使用して、Ubuntu 11.04 の NASM にコマンドを実装しようとしています。私のプログラムは正常にコンパイルされ、正常に実行されます (そう思われます)。しかし、cat filenameコマンドを起動しようとすると、「そのようなファイルまたはディレクトリはありません」と表示されますが、ディレクトリにファイルが存在することがわかります。ダブルクリックしてファイルを開こうとすると、「ファイルを開くために必要な権限がありません」と表示されます。私のコードのエラーを見つけるのを手伝ってくれませんか?

コードは次のとおりです。

ps 上記のコードは、RageD からの提案を取り入れて再編集されています。それでも、私が作成したファイルには、「inputAndWrite」セグメントから与えられた入力行が含まれていません。私はあなたの提案を探しています。

0 投票する
0 に答える
444 参照

compilation - x64 Windows で dosbox を拒否する i386 exe ファイル

自分のマシン (windows 7 x64) でコードを実行しようとしています。これは、サードパーティが提供する i386 ベースの dll を動作させる必要がある Fortran 90 コードです。

(最新の gfortran と mingw を使用して) x64 ターゲットにコンパイルしようとすると、i386 dll ファイルが原因で拒否されました。次に、i686 ターゲットにコンパイルしようとしましたが、コンパイルはエラーなしで機能しました。

ただし、出力された a.exe ファイルは x64 ウィンドウでは実行されず (予想どおり)、Dosbox から実行しようとすると (正しいディレクトリに到達したときに "a" または "a.exe" と入力するだけです)。 、「このプログラムは DOS モードでは実行できません」というメッセージが表示されました。

だから私の質問は: コンパイル プロセスの失敗ですか、それとも Dosbox が何らかの理由でプログラムを拒否しますか (その理由は、実行時に "a.exe" プログラムがファイルに書き込む必要がある可能性があります: それはその目的であり、実際に!) もしそうなら、その理由は何ですか?最終的に私のexeファイルが実行されるのを確認する方法はありますか? 私のマシンで?

編集: Dosbox は確かに私が別のプロジェクトから持っている 32 ビットの exe ファイルを実行できるので、Dosbox が完全に機能しないわけではありません。ただし、そのexeファイルをWindows 7で直接開こうとすると、x64と互換性がないと表示されますが、他のファイル(a.exe)の場合、コード「0xC000007b」で「初期化に失敗しました」と表示されます...残念ながら私のコンパイラのデバッグの知識はゼロに近いです...

ご助力ありがとうございます!

0 投票する
1 に答える
2007 参照

operating-system - シンプルな x86 エミュレーターとオペレーティング システムの推奨事項

個人的な学習プロジェクトとして、既存の x86 エミュレーター ライブラリを JavaScript に移植し、その上で非常に単純なオペレーティング システムを実行したいと考えています。

emscripten と asm.js を使用してソース ファイルを JavaScript にコンパイルしたいので、ライブラリに対する私の唯一の要件は、C\C++ で記述されている必要があることです。ライブラリは、少なくとも x86 オペコードを解釈できる必要があります。JavaScript の特定の環境の詳細 (メモリ、GUI、割り込みなど) を自分で実装できます。オペレーティング システムは、十分に単純でエミュレータ上で実行できる限り、要件はありません。

これまでの私の調査では、Softx86が最も実行可能なソリューションのように思えます。これは、JavaScript に移植するのに十分単純であるように思われるためです (CPU エミュレーションのみを行います)。私が見つけることができる最も単純な 16 ビット リアルモード オペレーティング システムはMikeOSです。唯一の問題は、Softx86 がエミュレートできない 386 プロセッサが必要であり、それらが完全に互換性があるかどうかわからないことです。

私の質問は、JavaScript に移植できるほど単純なエミュレーター OS の別の組み合わせを誰かが知っているかどうかです。