2^20+HMA #4 #1 物理アドレスと仮想アドレスのビット数はCPUID命令のEAX=80000008hで得られる。 #2 ES,CS,SS,DSは0。FS,GSはセグメントディスクリプタまたはモデル固有レジスタで指定。 #3 x86では、ページサイズ拡張または物理アドレス拡張を有効にすると2^36になるが、AMD64のlegacyモードではそれぞれ2^40、2^52になる。 #4 リアルモードの特殊な状態を使うと、2^32になる。 各モードの区別は次のビットで行う。 legacyモードとlongモード: EFER(モデル固有レジスタC0000080h)のLMEビット compatibilityモードと64ビットモード: コードセグメントディスクリプタのLビット compatibilityモード中の16/32ビット: コードセグメントディスクリプタのDビット(legacyモードと同様
AMD64とEM64Tの非互換性 EM64TはAMD64と基本的に互換性があります。 ただし、互換性は100%ではありません。 例えばAMD独自の拡張である3DNow!はEM64Tにはありません。 SSE3は初期のAMD64(SledgeHammer/ClawHammer/NewCastle/Winchesterなど)では使えません。(AMD64でのSSE3はVenice/SanDiego(など)以降で利用可能。) それ以外にも相違点があります。 LAHF/SAHF AMD64では64-bit modeでもLAHF/SAHFが使えますが、EM64Tでは使えません。 インテルがEM64Tの実装を進める際に拠り所としたAMD64の仕様書が 古かったことによるものらしいです。 http://komatsuna.cocolog-nifty.com/buncho/2004/06/amd64intel
Intel® 64 architecture delivers 64-bit computing in embedded designs when combined with supporting software.1 Intel® 64 architecture improves performance by allowing systems to address more than 4 GB of both virtual and physical memory. Intel® 64 architecture support for: 64-bit flat virtual address space 64-bit pointers 64-bit wide general-purpose registers 64-bit integer support Up to one teraby
NX bit考察 WindowsXP SP2でサポートされるようになったDEP(Data Execute Prevention, データ実行防止)機能。 この機能を使うにはCPU側にNX bitが必要ですが、このNX bitについて考えてみます。 データ領域からの実行 NX bitのあるCPUでは、「実行禁止」とマーキングしたメモリ領域からの実行を禁止できます。 正確には、実行しようとすると#PF(Page Fault)が発生し、OS側でそれを察知して当該プロセスを停止させることができます。 Windows XP SP2で採用されたDEPの仕組み NX bitはページング機能の一部として実装されています。正確には、 NX bitはリニアアドレス・変換テーブル(paging tables)のエントリーの中にあり、 ページ単位でNX bitを設定することができます。 さらにこの場合のページン
Introduction Most present day computers sport powerful GPUs (Graphics Processing Units) capable of beating even high-end CPUs in terms of raw FLOPS when performing at their peak. Consequently, there has been lot of work recently on implementing different problems on GPUs to exploit their high processing power. One such problem is sorting, which has been a major computational bottleneck in applicat
GoogleのJoshua Bloch(Sun Microsystemsから転職したのは,このブログの読者は知ってるよね?)が,Google Research Blogで長い間眠っていた興味深いJavaのライブラリのバグについて報告している. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html 問題があるのは二分探索のコード中の中間を知るために平均を求める部分なのだが,整数値を加算した時にオーバーフローすると負の値になってしまい,その結果ArrayIndexOutOfBoundsExceptionが投げられるというものだ.java.util.Arraysクラス以外にも,java.util.Collectionsクラスやjava.util.TreeMapクラスや,他の分割統治
PC-A801エミュレータ(開発予告) PC-A801とは PC-A801エミュレータは、仮想ハードウェアPC-A801、A8-BIOS、DOS/256Tを含んだシステムです。通常のエミュレータと異なり、エミュレート対象となる本物のハードウェアは存在しません。PC-A800シリーズは、NECのPC-9800シリーズの後継機を今作るとしたらどうなるかを空想して、fnamiが策定した仕様に基づく、仮想的なハードウェアのシリーズ名です。PC-A801はその最初の仕様の名前であり、エミュレータによって実現された仮想ハードウェアの名前でもあります。 (仮想ハードウェアの)技術的詳細 熱く語る プロセッサはAMD64アーキテクチャ PC-A801エミュレータは、AMD64およびその互換アーキテクチャで動作し、その上で動くソフトウェアからもAMD64のほとんどの機能が利用可能になる予定です。 VRAMは
XOR で変数を交換する 『xor を使うと temporary 領域なしで値を交換できる話』だと思った人、 残念でした。そういう話ではありません。 話は逆です。『そげなことは無駄だよ』という話。 本当にちゃんと交換できるの? 次の関数は pointer a と pointer b が指している先の値を交換するものです。 この関数は常に正しいかどうか、わかりますか? void swap( int *a, int *b ) { *a ^= *b; *b ^= *a; *a ^= *b; } 実は正しくありません。 a や b が指している先が本当に int とは限らない。 Cにおいてはポインターに限らず、 ほとんどあらゆるものが自動的にキャストされます。 キャストした結果が int と一致するとは限りません。 いらんところまで交換されてはたまりません。
TechTarget and Informa Tech’s Digital Business Combine.TechTarget and Informa TechTarget and Informa Tech’s Digital Business Combine.Together, we power an unparalleled network of 220+ online properties covering 10,000+ granular topics, serving an audience of 50+ million professionals with original, objective content from trusted sources. We help you gain critical insights and make more informed de
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く