問題タブ [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.
gcc - djgpp gpp パス変数インライン アセンブリ
コンパイラgppおよびインテル構文でDJGPPを使用
するインラインアセンブリに変数を渡す方法は?
エラーは次のとおりです:
`n' へ
の未定義参照 コード:
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
ブロックは同じ効果があり、トラップされた命令の前に関数呼び出しがない限り、例外はキャッチされません。
c - djgpp でコンパイルする場合、__MSDOS__ はまだ定義されていますか?
__MSDOS__
djgpp で十分に使用できますか、それとも__DJGPP__
代わりに使用する必要がありますか?
比較すると、_WIN32
cygwin ではデフォルトで定義されていないことがわかっています(djgpp と cygwin には、実際の OS の詳細を隠すために Unix レイヤーを構築する目的があるという前提に基づいています)。
テストするための DOS マシンはもうありません。
c - キーボード ハンドラが segfault を引き起こす (djgpp)
最近、単純な MSDOS ゲームをコーディングするのは面白いだろうと決心しました。言うまでもなく、キーボード イベントを処理するためのコードが必要です。
これは私がテストのために思いついたものです:
コードは、キーが押されるのを待ってから、文字の ASCII 値を出力することになっています。backspaceまたはのようなキーを押さない限り、すべてが期待どおりに機能しますesc-その後、セグメンテーション違反が発生します。
私はアセンブリに慣れていませんが、実際にこのエラーの原因がわかりません。
でコンパイルしdjgpp
、実行可能ファイルを実行しますDosBox
すべては、ここで提供される情報に基づいています。
- https://courses.engr.illinois.edu/ece390/books/artofasm/CH20/CH20-3.html
- https://en.wikipedia.org/wiki/BIOS_interrupt_call
前もって感謝します!:)
c - 保護されたハードウェア割り込みハンドラーが動かなくなった? (DJGPP)
dosbox-0.74でコンパイルするためにdjgpp-2を使用して、保護モードでハードウェア割り込みハンドラーをセットアップしようとしています。これが可能な最小のコードです(タイマー割り込み)、私は推測します:
ハンドラーをチェーンしているのではなく、置き換えていることに注意してください。カウンターはそれ以上増加しません1
(したがって、メイン ループを停止することはありません)。これにより、ハンドラーが正しく返されないか、1 回だけ呼び出されると推測されます。一方、チェーンは正常に機能します (ラッパー行を削除して に置き換えますset_protected_mode
) chain_protected_mode
。行がありませんか?