資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
5: 2007-12-02 (日) 12:46:42 ソース バックアップ No.5 を復元して編集 6: 2007-12-02 (日) 23:44:30 ソース バックアップ No.6 を復元して編集
Line 29: Line 29:
32ビット。16ビットのたった2倍だよね?。上記と同じように計算してみると・・・~ 32ビット。16ビットのたった2倍だよね?。上記と同じように計算してみると・・・~
0x00000000番地〜0xFFFFFFFF番地まで。0xFFFFFFFFバイト。10進数に直すと4,294,967,295バイト。これを1024で割り算してKB単位にすると・・・4,194,304KB・・・さらに1024で割り算してMB単位にすると・・・4096MB・・・もういいよね? なんと、4GB!!!~ 0x00000000番地〜0xFFFFFFFF番地まで。0xFFFFFFFFバイト。10進数に直すと4,294,967,295バイト。これを1024で割り算してKB単位にすると・・・4,194,304KB・・・さらに1024で割り算してMB単位にすると・・・4096MB・・・もういいよね? なんと、4GB!!!~
-こんなに贅沢に沢山のメモリを使えるので、32ビットの時にはセグメントなんてない。というか、そんなややこしいことしなくてもいいわけ。(注1)+こんなに贅沢に沢山のメモリを使えるので、32ビットの時にはセグメントなんてない。というか、そんなややこしいことしなくてもいいわけ。[[(注1):http://thebbl.hideyosi.com/modules/bwiki/index.php?%BB%F1%CE%C1%2Fx86%2F%A5%BB%A5%B0%A5%E1%A5%F3%A5%C8#j65cbf7c]]
そう。CPUのビット数だけ見ると、たかだか倍なのでたいしたことないように見えるかもしれないけど、16ビットと32ビットじゃ、こんなに巨大な差があるんだ! そう。CPUのビット数だけ見ると、たかだか倍なのでたいしたことないように見えるかもしれないけど、16ビットと32ビットじゃ、こんなに巨大な差があるんだ!
Line 112: Line 112:
-''セグメント値:''メモリを分割して64KB単位で扱う場合の先頭アドレス(開始番地) -''セグメント値:''メモリを分割して64KB単位で扱う場合の先頭アドレス(開始番地)
-''オフセット値:''セグメント値を基点(スタート位置)にして、そこから何バイト後ろにずれているか -''オフセット値:''セグメント値を基点(スタート位置)にして、そこから何バイト後ろにずれているか
 +
 +**そんなわけで・・・ [#bd10221e]
 +8086、あるいはその互換であるリアルモード時のCPUは、''ことアドレスを指定する場合は必ず2つで指定する''と覚えておけばとりあえずは原理を理解できると思う。
 +
 +アドレスを指定するっていうのはなにもプログラム・プログラマの話だけではないよ。
 +
 +CPUが動作する場合に必要な部分でも全てこの法則に当てはめれば、別の形で整理できるんじゃないかな?
 +
 +例えば・・・・
 +
 +-プログラム上でのアドレス指定
 +--これまで説明してきたからわかるよね?
 +-インストラクションポインタ
 +--これはCPUが''次の命令のアドレス''としているもの。
 +--なので、[CS:IP]という2つのレジスタが必要
 +-スタック
 +--CPUが一時的に使う変数とかを保持しておくための場所を示している。
 +--なので、[SS:SP]という2つのレジスタが必要
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +-----
 +*ウソつけ!32ビットでもセグメントあるじゃん! [#j65cbf7c]
 +
 +工事中・・・


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 4430, today: 1, yesterday: 3