3

メモリアドレスが値を格納する方法について初心者の質問があります。

例えば、

addr  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  +0123456789ABCDEF
0000  50 61 78 20 69 73 20 61 20 72 65 61 6C 6C 79 20   Pax is a really 
0010  63 6F 6F 6C 20 67 75 79 00                        cool guy.

0000はアドレスですか?50 61 78 20 69 73 20 61 20 72 65 61 6C 6C 79 20 は0000番地に格納されている値ですか?

4

4 に答える 4

3

これ0000は、ラベルからのアドレスですaddr。に格納される唯一の値0000は です50。各バイトには独自のアドレスがあります。

------+--------
 addr |  data
------+--------
 0000 | 50
 0001 | 61
 0002 | 78
 0003 | 20
 0004 | 69
 0005 | 73
 0006 | 20
 0007 | 61
 0008 | 20
 0009 | 72
 000A | 65
 000B | 61
 000C | 6C
 000D | 6C
 000E | 79
 000F | 20

たとえば0000、ベースアドレスとして考えた場合20、最後の値は、ベースアドレス + そのアドレスからのオフセットFとして格納されます。0000 + F = 000F

于 2013-10-30T02:26:31.320 に答える
1

0000ローカライズされたアドレスからの単なるオフセットである可能性があります。基本的に、、、BaseAddress + 0000などBaseAddress + 0010

値は ASCII で、右側の文字と一致します。そのメモリにテキスト メッセージ (または文字列) を保存しました。

各メモリ アドレスは 1 バイト (これも 8 ビットで、2 桁の 16 進数 ("hex") も含む) を格納します。 0000( 0000 +0) は 16 進値500001( 0000 +1) は 16 進値61などです。

于 2013-10-30T02:22:39.043 に答える
1
addr  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  +0123456789ABCDEF
0000  50 61 78 20 69 73 20 61 20 72 65 61 6C 6C 79 20   Pax is a really 
0010  63 6F 6F 6C 20 67 75 79 00                        cool guy.

0000 はアドレスのように見えますが、相対アドレス (またはオフセット) である可能性があります。この出力はそれを言っているようです

addr            value
0000+0 (0000)   0x50  
0000+1 (0001)   0x61
0000+2(0002)    0x78 
  ....
于 2013-10-30T02:25:16.597 に答える
0

はい、0000住所と見なすことができます。に「保存」されるものについては0000、具体的には値50がそこに保存され0001、 の値に61が保存されます。

ただし、16 ビット整数、32 ビット整数、文字列、さらにはレコード構造などの高レベルのデータ構造では、「何が格納されているか」に対する答え0000はさらに複雑になります。

0000Intel アーキテクチャの場合、16 ビット 2 進整数が に格納されている場合、値は6150、または 10 進数で 24912 になります。これは、Intel が「リトル エンディアン」であり、最上位バイトを後でアドレス空間に格納したためです。「ビッグ エンディアン」プロセッサの場合、値は516010 進数の 20832 です。

現在、これは 2 進化 10 進数でコーディングできます。その場合、値は 10 進数で 6150 または 5160 になります (エンディアンによって異なります)。

したがって、整数のような単純なものであっても、メモリ内に格納するにはさまざまな方法があることがわかります。

したがって、バイト レベルでは、答えは非常に単純です。それを超えて、格納されているデータがバイトレベルでどのように表現されるかによって異なります。

于 2013-10-30T02:26:58.687 に答える