野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14545|回复: 5

一个内存地址代表一个字节么

[复制链接]
发表于 2016-7-26 11:45:56 | 显示全部楼层 |阅读模式
在寄存器操作中  一个内存地址有32个二进制位  可是不是8个二进制位为1字节么
回复

使用道具 举报

发表于 2016-7-26 11:50:09 | 显示全部楼层
一个地址是一个字节
例如 0x8000 0000 指一个字节,0x8000 0001 指第二个字节
但是如是你使用32位(4个字节)的指针操作,cpu会直接读取4个字节的内容,也就是一次把0x8000 0000 -0x8000 0003的内容都读回来了,
具体读多少看你指针的类型
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-26 12:04:56 | 显示全部楼层
flyleaf 发表于 2016-7-26 11:50
一个地址是一个字节
例如 0x8000 0000 指一个字节,0x8000 0001 指第二个字节
但是如是你使用32位(4个字 ...

假如说是32位的指针 对寄存器初地址为0x4001 0c00赋值时 就直接把为0x4001 0c00 0x4001 0c01 为0x4001 0c02 0x4001 0c03地址上的内存也赋值了吗
回复 支持 反对

使用道具 举报

发表于 2016-7-26 14:34:50 | 显示全部楼层
34327752 发表于 2016-7-26 12:04
假如说是32位的指针 对寄存器初地址为0x4001 0c00赋值时 就直接把为0x4001 0c00 0x4001 0c01 为0x4001 0c ...

是的
回复 支持 反对

使用道具 举报

发表于 2019-6-26 15:53:48 | 显示全部楼层
大三计算机学生,才看完火哥的启动文件详解。不太明白的是,为什么地址里0x0001->能访问8bit空间,0x0000到0x0003我知道是STM32一次性寻址就全部读了4个地址号,所以一次性就读了4*8的空间大小。
问题来了:那读取地址的时候,这个地址数是在哪里?它为什么被执行之后就能指向内存(我大一用指针用得很熟练,但是汇编我们计算机学院不开这课),我猜和电子科学的汇编原理相关。
第二个问题:那么编译器里做结构体变量的时候,就相当于在连续开辟空间了,我大一研究过VS2017的C++编译器,它的结构体每个int地址是8个8个这样指向下一个,若我改成32位编译平台,int类型的地址又是4个四个这样指向下一个,当年只是觉得这就是64计算机和32位计算机的差别,学得多了才发现事实应该没那么简单,那么我的猜想对不对呢?专业术语里,应该和ARM不同寻址方式有关
请高手解答,告诉我专业术语的关键词,我自己也能去搜索学习。

4bit的地址,如何跳转到32bit的内存空间呢?

4bit的地址,如何跳转到32bit的内存空间呢?
回复 支持 反对

使用道具 举报

发表于 2019-6-26 16:16:17 | 显示全部楼层
数据总线是读写能力的指标,说明一次能读多少条线
控制总线是控制外部设备,比如打印机键盘屏幕磁盘啥的
地址总线如果是2根,为什么它就意味着有 2的二次方的存储空间呢?应该理解成n根地址总线能代表 2的n次方 种状态,就是地址的最大值吧
那数据总线到底往哪里写东西?
顺序是  先找地址总线,看看是要去哪个存储器上,再执行数据总线,来进行交换吗?
那为什么每一个状态里面,64位就能一次性存取64位的数据呢?
是不是说明一个状态,就挂着一个 64bit=8 BYTE 的内存条或者磁盘?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2026-1-29 03:15 , Processed in 0.047535 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表