問題タブ [djgpp]

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 に答える
163 参照

gcc - djgpp gpp パス変数インライン アセンブリ

コンパイラgppおよびインテル構文でDJGPPを使用
するインラインアセンブリに変数を渡す方法は?
エラーは次のとおりです:
`n' へ

の未定義参照 コード:

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

c++ - ハードウェア例外ハンドラーからの C++ 例外のスロー。-fnon-call-exceptions が期待どおりに動作しないのはなぜですか?

昨夜、ハードウェア例外をトラップしてC++ exception代わりにスローするという面白いアイデアを思いつきました。FPU exceptions通常はクラッシュするか、静かに戻っNaNて予期しない動作を引き起こすのようなものに役立つかもしれないと考えました。ここではA のC++ exception方がはるかに望ましいでしょう。

だから私は午前中ずっとハッキングして、ついにそれを働かせました。よくほとんど。コンパイラは、算術演算が をスローできるようになったことをまだ認識しておらず、その周りのブロックC++ exceptionsを黙って破棄します。try/catch関数で例外が発生したときに機能します。

これは珍しい質問だと思います...しかし、これを機能させる方法はありますか? gcc例外がどこでも発生する可能性があることを伝える方法はありますか?

私はdjgpp(私が信じている)DWARF例外処理を使用してコンパイルしています。


編集:探しているもののように見えるgccフラグ -fnon-call-exceptionsとを見つけました。-fasynchronous-unwind-tablesしかし、それでもうまくいきません...


編集:前述のgccフラグを使用すると、2 つの関数呼び出しの間に例外が発生したときにキャッチされます


編集:ネストされたtry/catchブロックは同じ効果があり、トラップされた命令の前に関数呼び出しがない限り、例外はキャッチされません。


編集:これをgcc のバグの可能性として提出し、コードを単純なテストケースに減らしました。

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

c - djgpp でコンパイルする場合、__MSDOS__ はまだ定義されていますか?

__MSDOS__djgpp で十分に使用できますか、それとも__DJGPP__代わりに使用する必要がありますか?

比較すると、_WIN32cygwin ではデフォルトで定義されていないことがわかっています(djgpp と cygwin には、実際の OS の詳細を隠すために Unix レイヤーを構築する目的があるという前提に基づいています)

テストするための DOS マシンはもうありません。

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

c - キーボード ハンドラが segfault を引き起こす (djgpp)

最近、単純な MSDOS ゲームをコーディングするのは面白いだろうと決心しました。言うまでもなく、キーボード イベントを処理するためのコードが必要です。

これは私がテストのために思いついたものです:

コードは、キーが押されるのを待ってから、文字の ASCII 値を出力することになっています。backspaceまたはのようなキーを押さない限り、すべてが期待どおりに機能しますesc-その後、セグメンテーション違反が発生します。

ここに画像の説明を入力

私はアセンブリに慣れていませんが、実際にこのエラーの原因がわかりません。

でコンパイルしdjgpp、実行可能ファイルを実行しますDosBox

すべては、ここで提供される情報に基づいています。

前もって感謝します!:)

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

c - 保護されたハードウェア割り込みハンドラーが動かなくなった? (DJGPP)

でコンパイルするためにを使用して、保護モードでハードウェア割り込みハンドラーをセットアップしようとしています。これが可能な最小のコードです(タイマー割り込み)、私は推測します:

ハンドラーをチェーンしているのではなく、置き換えていることに注意してください。カウンターはそれ以上増加しません1(したがって、メイン ループを停止することはありません)。これにより、ハンドラーが正しく返されないか、1 回だけ呼び出されると推測されます。一方、チェーンは正常に機能します (ラッパー行を削除して に置き換えますset_protected_mode) chain_protected_mode。行がありませんか?