問題タブ [16-bit]
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.
assembly - CD からのセクタのロード
私は OS 設計に不慣れで、これまでに 1 つの「OS」(実際にはただ 1 つのブートセクタ) を設計し、別個のブートローダーと「カーネル」(まだ非常に単純) を作成しようと決心しました。私の質問は単純ですが、グーグルで検索してこのサイトを検索することで、なんとか私を逃れました(わかりました、同様の質問が1つ見つかりましたが、答えは漠然としていて、私がそれを使用できるようにすることでした)。
int 0x13 AH=02 を見てきましたが、それはトラックを使用していますが、これは CD では使用されていないと思います。拡張読み取りセクター (AH=0x42) を使用する必要があることをどこかで見ましたが、どのセクターを読み取るかを指定できる場所と、そのセクターを RAM のどこに配置する必要があるかがわからないため、その使用方法がわかりません。 .
質問は次のとおりです。El Torito no エミュレーションを使用する CD からセクタをロードするにはどうすればよいですか。私はこれが初めてなので、答えを「最も単純な形式」にして、いくつかのコードを提供していただければ幸いです。前もって感謝します!
編集:
必要かどうかわかりませんが、私は NASM 構文を使用しているので、NASM で答えていただければ助かります。
c - Cで16ビット整数を定義する
16ビットサイズの整数をCで宣言する必要があります。
shortとintのサイズはマシンに依存することを私は知っています。
使ってみまし"stdint.h",
たが、単純に使っているようです
だから私の質問は:
私は何かが足りず、短いタイプは16ビット長を保証しますか?
いいえの場合、それを保証する代替手段はありますか?
encryption - 16 ビット システム用の RC4 の書き込み
私は DCPU-16 用の RC4 を書いていますが、始める前にいくつか質問があります。
RC4 アルゴリズム:
私は 16 ビット ワードを扱っているため、各要素はS[]
、予想される 0 ~ 255 ではなく、0 ~ 65535 の範囲に収まります。K は 0 ~ 65535 である必要があります。この問題に対処するための最善の方法は何でしょうか?
私が見るオプション(およびそれらの問題)は次のとおりです。
- どこでも引き続き使用し、連結された 2 つのラウンドを出力に取り込みます (実行に時間がかかるため、 CPBをできるだけ低く
Mod 255
保ちたいと考えています)。 - RC4 を微調整
K
して、長さ 255 の配列を使用しながら 16 ビットの数値になるようにしS[]
ます (暗号化を正しく行いたいので、RC4 をいじる際の間違いが心配です)。
私の最良の選択肢は何ですか?#1をしなければならないかもしれないと感じていますが、ここにいる人々が私に#3をする自信を与えてくれることを願っています.
c++ - 16 ビット PCM からサンプルの「ボリューム」を変更することによって作成されたノイズを低減または除去するにはどうすればよいですか?
私は現在、44100Hz のサンプル レートで 16 ビットのウェーブ ファイルをロードしている小さなプロジェクトに取り組んでいます。通常の再生では、オーディオは問題ないように見えますが、音量を変更するために振幅サイズなどを操作し始めるとすぐに、静的ノイズが少し発生し始めます。
私がやっていることは、この 16 ビット タイプ a short の場合にバッファからサンプルを取得し、これを -1 から 1 の範囲の float に変換して、ミキシングやその他の効果を開始することです。これで音量も変更します.1を掛けるだけで同じ出力が得られますが、音量を変更し始めるとすぐに静的ノイズが聞こえます. 1.0 を超えるときと 1.0 を下回るときに発生します。そして、スケールが大きくなったり小さくなったりすると悪化します。
ノイズを低減または除去する方法を知っている人はいますか?
visual-c++ - 16 ビット obj ファイル VC++
作業中のブートローダーで使用するために、VC++ プロジェクトを 16 ビット フラット オブジェクト ファイルにコンパイルするにはどうすればよいですか?
私の理解では、オブジェクト ファイルは技術的には既に「フラット」であり、リンカーはそれを目的の実行可能形式に変換します。そのオブジェクト ファイルを取得し、それとアセンブリ コード (obj 形式) をリンカーを介して渡して、フラット ブートローダーを作成できるようにしたいのです。
[ガイド][1] は、ファイルがどこにあるかについてあまり具体的ではなくcl.exe
、 、link.exe
、およびml.exe
(MASM) を使用しているとだけ述べています。
このガイドでは MASM を使用していますが、オブジェクト ファイルを NASM で出力する方法を知っています。私の主な問題は VC++ のことです。
c - GCCでコンパイルされた16ビットCコード
GCCで16ビットCコードをコンパイルするにはどうすればよいですか?「HelloWorld!」とだけ書き込むフラットブートローダーを作成しようとしています。コンピュータに接続して停止します。
windows - 断続的に WIN87EM.DLL で GPF を引き起こす古い 16 ビット アプリケーション
Windows 3.1 用に開発された古い 16 ビット アプリケーションがあります。いくつかの計算を実行し、より複雑なシステムの一部です。システムはプログラムの入力を設定し、出力結果を収集します。
残念ながら、16 ビット プログラムは当面の間存続するため、最新のオペレーティング システムで発生するフラストレーションを回避する必要があります。
システムは Windows XP で動作し、物理的な Windows XP マシンでも正常に動作します。私が問題を抱えているマシンは、Debian ボックスの VirtualBox (バージョン 4.1.12) で実行されている Windows XP インスタンスです。物理コンピューターは、Quad Core Xeon 3.4 Ghz を搭載した HP Proliant サーバーです。リモート デスクトップを使用して、Windows 7 ボックスからコンピューターにアクセスしています。
私が得ているエラーは、「PROGRAM がアドレス : 0001:02C9 の WIN87EM.DLL で一般保護違反を引き起こしました」です。面倒なことは、うまくいくときもあればうまくいかないときもあり、トラブルシューティングがさらにイライラすることです。
インターネットをトロールしていると、同じ問題に言及しているサイトをいくつか見つけました。WIN87EM.DLL が浮動小数点ルーチンを提供し、特定のプリンターにいくつかの問題があることを除いて、それらのどれも実際の解決策を提供していないようです。
仮想マシン上のすべてのプリンターをアンインストールしました。また、マシンにプリンターが存在するように、PDF ライターをインストールしてデフォルトのプリンターとして設定しようとしました。リモート デスクトップ接続でのリソース共有を無効にしました。マシンの仮想マシン ゲスト ドライバーを更新しました。また、実行可能ファイルのプロパティで互換性を Windows 95 に設定しようとしました。
この問題をトラブルシューティングするための指針、またはそれを機能させるための方法はありますか?
assembly - CMPSB命令と混同
私はこのコードを見てきましたが、rep cmpsb行について混乱しています。
cmpsb cx 回繰り返すことは理解していますが、これは 2 つの文字列をどのように比較しますか? たとえば、"Hey\0" と "hey\0" を比較していて、このループで 4 つの文字列を比較していたとします。最初の文字が異なり、それに応じて EFlags レジスタが設定されます。ただし、cmpsb命令は繰り返され、次の文字は同じになります。cmpsbの仕組みを誤解しているかもしれませんが、このループは 2 つの文字列を正しく比較していないようです。このループは実際に機能しますか?
java - Android:単一チャネルの16ビットPNGビットマップのピクセルを取得する方法
高さマップ(正の値)を含むPythonPILで作成されたpngファイルがあります。
形式は次のとおりです。16ビットのシングルチャネル(グレーレベル)、つまりピクセルあたり16ビット。
私はアンドロイドでファイルを読みましたBitmapFactory.decodeStream(<...data input stream...>);
getWidth()
とを介して画像のサイズを正しく取得しますgetHeight()
。
ただし、Iを呼び出すピクセルをループするとgetPixel(i,j)
、次のような負の値が得られます。-16776192 -16250872 -16250872 -16250872 -16250872-16249848...。
代わりに、0から65535の間の正の値を期待しています。
バイナリの値-16250872が1111111111111111111111111111111111111111000010000000100000001000であることを発見しました
これは、情報が最初の16の最下位ビットに依存していることを示しています。
試してみたところgetPixel(i,j)&0xffff
、もっともらしい値が得られましたが、エンディアンについてはよくわかりません。抽出された2バイトを反転する必要がありますか?
この変換をよりエレガントでポータブルな方法で行う方法はありますか?
注:ファイルはカラー(RGBA)PNGではなく、ピクセルごとに1つの16ビット値を持つグレーレベルのPNG画像です。
assembly - 16bitでのプッシュの使い方 - tasm
プッシュ命令を使用する場合、SUM の参照をプッシュしますか、それとも値をプッシュしますか? func を呼び出した後、SUM は変更されますか?