Tại sao một địa chỉ bộ nhớ chỉ chứa 16 byte dữ liệu?


0
0x8048384 <main+16>: 0x00fc45c7     0x83000000     0x7e09fc7d     0xc713eb02
0x8048394 <main+32>: 0x84842404     0x01e80804     0x8dffffff     0x00fffc45

Vậy mỗi địa chỉ bộ nhớ chứa 16 byte dữ liệu? 4 x = 16. Vậy 4 byte là = 0x00fc45c7

Tôi có đúng không


2
Tôi không chắc chắn tôi làm theo câu hỏi của bạn. Hoặc bạn đọc nó dưới dạng 'Một địa chỉ bộ nhớ chứa một byte dữ liệu. Theo định nghĩa. Và trong trường hợp PC, byte đó rộng 8 bit). Thì 0x00fc45c7 là một bộ gồm bốn byte (0x00, 0xFC, 0x45 và 0xC7) được viết ở dạng ngắn hơn. Hoặc bạn đang xem bốn bộ 4 byte trên mỗi dòng.
Hennes

Hmm ... vì vậy nó rộng 8 byte. Tôi nghĩ rằng nó rộng 4 byte. Bởi vì bạn có mức tăng chính từ 16 đến 16. Bạn có chắc không?
Alkerak

4 bộ 4 byte là 16 byte (hoặc 0x10 byte theo hệ thập lục phân). 0x80483 & lt; b & gt; 8 & lt; / b & gt; 4 cộng mười sáu (0x10) là 0x80483 & lt; b & gt; 9 & lt; / b & gt; 4
Hennes

ok, tôi nghĩ rằng tôi đã nhận nó Vậy 0x00fc45c7 là 4 byte. Và tôi có tổng số 16 byte trên mỗi dòng. Nhưng đây không phải là một địa chỉ bộ nhớ? 0x8048384. Vì vậy, trong địa chỉ bộ nhớ này được lưu trữ 16 byte dữ liệu hoặc 0x00fc45c7 0x83000000 0x7e09fc7d 0xc713eb02
Alkerak

Nó phụ thuộc vào cách bạn nhìn vào một địa chỉ bộ nhớ. Một cách là nhìn vào một địa chỉ là một byte đơn. Một cách khác là xem xét nó với độ rộng của cơ sở dữ liệu (trong trường hợp một địa chỉ là một tập hợp gồm bốn byte tuần tự. Tất cả có thể được đọc đồng thời và bắt đầu ở độ lệch modulo 4).
Hennes

Câu trả lời:


5

Nó không. Một địa chỉ cụ thể trong bộ nhớ thường trỏ đến một byte của bộ nhớ. Tuy nhiên, màn hình của bạn ở đây hiển thị cho bạn từng byte bộ nhớ từ 0x8048384 đến 0x80483A4 - Đó là 32 byte bộ nhớ, được tổ chức thành 2 hàng 4 giá trị 4 byte.

Nếu bạn nhìn kỹ ở phía bên trái, các địa chỉ không tăng thêm một giữa các dòng, mà là 16: 84 - & gt; 94 (trong cơ sở 16), cho bạn biết rằng có 16 byte bộ nhớ được hiển thị trên mỗi dòng. Điều này thường thuận tiện hơn 1 byte trên mỗi dòng và các dòng 16 byte này được chia thành các nhóm 4 byte vì nó khá phổ biến để sử dụng các số 32 bit được căn chỉnh, mà mỗi nhóm gồm 4 byte đại diện. Điều này giúp dễ dàng xử lý thông tin một cách trực quan mà không cần dùng đến các công cụ khác để giải thích.


2
Tôi nghĩ rằng tôi nhận được nó. Vì vậy, 0x00fc45c7 nghỉ ngơi tại 0x8048384 và 0x83000000 nghỉ tại (0x8048384 + 4) và vv. Tôi có đúng không?
Alkerak

Vâng đúng rồi.
Hand-E-Food

1
Phụ lục: trình gỡ lỗi, tiện ích kết xuất đĩa và các công cụ tương tự thường sử dụng loại màn hình hiển thị. COULD đầu ra được hiển thị dưới dạng địa chỉ bốn byte (tám chữ số hex) theo sau là một byte đơn, sau đó là một địa chỉ bốn byte khác (cao hơn một byte) theo sau bởi một byte khác, v.v. Nhưng điều đó sẽ tốn rất nhiều không gian trên màn hình Hiển thị trên mỗi dòng nội dung có giá trị 16 byte cùng với địa chỉ của byte đầu tiên là một quy ước thuận tiện và được hiểu rộng rãi để tiết kiệm không gian hiển thị trong khi hiển thị đủ "mốc" (địa chỉ) để không bị mất.
Jamie Hanrahan

1
Phụ lục 2. Một địa chỉ bộ nhớ không chứa dữ liệu. Một địa chỉ bộ nhớ cho biết nơi dữ liệu . Kí ức tại địa chỉ chứa dữ liệu.
Jamie Hanrahan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.