
A 回答 (3件)
- 最新から表示
- 回答順に表示

No.3
- 回答日時:
>エミュレータ側にいかなる実装をしようとも、
>かつ、装置の本来の実行速度をあらかじめ入手することなく
>検出する方法という都合のよいものはやはりないのでしょうか。
所詮ソフトですよ。かって.symdeb.exeのトレース(エミュレーターの一つ)をしていると実行速度の差からハングアップするコピープロテクトとかありましたが.ことごとく破るソフトが開発されています。だから簡単に避けられてしまいます。
>2つのコマンドの実行時間の違いから検出するといった方法が
特定のコマンドの実行速度を測定する方法は使えません。というのは.現在のOSは原則としてマルチタスクです。したがって.優先度の高いタスクが起動されると該当コマンドが待ち行列につながれてしまいますから.この待ち時間の影響を考慮しなければならないためです。Winでctrl+shift+delを押しただけで実行中のタスクが暴走した(エミュレーター上の動作として通常とは異なる動作をした)なんてことになりかねません。
ioやメモリー直接アクセスはスーパーバイザー(Winではデバドラ・BIOS)上での動作ですから.必要に応じて最高優先度を指定できます。つまり.実行優先度を最高優先度に.割り込み処理を一切抑止できる特権タスクを自前で作り実行するから可能です。しかし.osを含めて一般のタスクは優先度を低く押さえています(時計が遅れたというような事は一般のタスクの優先度の上げ過ぎから発生する)。
お話の内容では.マルチタスク処理を脅かす致命的障害になりかねません。不可能でしょう。

No.2
- 回答日時:
WInのMS-DOSエミュレーターの検出ならば.バージョン取得(Int21 ??かInt2f ??)でたしかVer7以上ならばエミュレーターと検出できます。
あとはioポートをダイレクトに操作する入出力をして.実機との時間差からエミュレータと判断する方法もあります。たたし.実機情報を持っていればですけと。
フロッピーを細工できるのであれば.ギャップにフラグを入れていてキャップを読み取れるかとする方法があります。一部のエミュレーターは標準フォーマットしか対応していないために.ギャッブを適当にいじると読めなくなりますから。
最後は.romの直接読み取りで.機種によってはramに比べて1ウェイト遅くしてある機種があります。RamとROMの読み取り速度の違いから検出できる場合があります。
この回答への補足
ご回答ありがとうございます。
求めていたものにかなり近いお答えを頂きまして嬉しく思います。
お答えから察するに基本的には、
(1)エミュレーターや装置に、検出を可能とする特別な仕掛けがあり、それを利用する方法
(2)装置の本来の実行時間をあらかじめ入手しておく方法
の2種類のようですね。
フロッピーの方法はエミュレータ側で対応することも可能だと受け取りました。
エミュレータ側にいかなる実装をしようとも、
かつ、装置の本来の実行速度をあらかじめ入手することなく
検出する方法という都合のよいものはやはりないのでしょうか。
たとえば2つのコマンドの実行時間の違いから検出するといった
方法があれば嬉しいのですが。
No.1
- 回答日時:
「エミュレータ上で動作している」なんて事がわかったらエミュレータの意味が半減するのではないでしょうか。
(完全なエミュレーションとは呼べなくなる)
エミュレータ側に「環境がエミュレータである」ことを示すような仕組みが組み込まれている場合は別ですが…
ただ、「エミュレータ」といっても、ICEやターミナルエミュレータ、ゲーム機エミュレータなど多種多様ですから具体的な環境示していただければ経験者の方ならわかるかもしれません。
この回答への補足
早速のご回答有難うございます。
エミュレータの限界に関心がありましたので、この様な質問を致しました。
想定する環境としては、Windows等のOS上で
動くプログラムが、本来のOS上ではなく、
そのOS上で動いているOSエミュレータ上で
動くときを考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XCOPYでネットワーク越しにコピ...
-
タスクスケジューラからショー...
-
再起動後必ず2つのエラーが出...
-
Googleアカウントが削除されて...
-
フォルダの中に1個しかファイ...
-
拡張子はなぜ、大文字と小文字...
-
vssver2.scc って消してもいい...
-
ファイルの開き方(拡張子なし)
-
Androidアルバムの画像を消去で...
-
フォルダーのプロパティで表示...
-
Excelの「アクセシビリティ 検...
-
Windows10 で登録した外字を他...
-
dirコマンドで表示されないフォ...
-
コマンドプロンプトからファイ...
-
oracleのimp-00002エラーについて
-
ひとつのファイルを一括で複数...
-
ターミナルソフトで全スクロー...
-
複数のフォルダへ同時にファイ...
-
Dドライブ直下にファイルを作成...
-
エクセルでの計算式もしくはシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XCOPYでネットワーク越しにコピ...
-
タスクスケジューラからショー...
-
batファイルをアンダグラウンド...
-
μiTronでの割込み処理について
-
C#からタスクマネージャーの【...
-
cgiを使ったページが表示さ...
-
再起動後必ず2つのエラーが出...
-
ExcelVBAからAccessのモジュー...
-
タスクマネージャーの状態の取...
-
eclipse の TasksにTODO が出ない
-
タスク、プログラム実行後に自...
-
username以外でログイン名を知...
-
バッチファイルをatコマンドで...
-
VC++6 の CVTRES.EXE について
-
エミュレータ上での動作の検出
-
タスクの相関図のわかりやすい...
-
ログイン前にタスクにて実行し...
-
拡張子はなぜ、大文字と小文字...
-
複数のフォルダへ同時にファイ...
-
Excelの「アクセシビリティ 検...
おすすめ情報