Memory 内存地址。。。为什么是0x0403001。。。?

Memory 内存地址。。。为什么是0x0403001。。。?,memory,arm,Memory,Arm,有人能解释一下为什么我们用这种方式表示内存地址本身吗 “地址上的字=0x00”: 0x0403001, 我知道01,02,03,04每一个都是一个字节,但是有人能告诉我这个字节在哪里,它代表什么吗?寄存器中的存储单元?我完全糊涂了……把内存想象成一个字节数组。”“地址上的单词”可以根据CPU设计者考虑的词来表示不同的东西。在您的情况下,一个单词似乎有32位长 所以“地址上的单词=0x00:0x0403001”表示: '从存储单元0x00(包括)开始,“下一个”四个字节是0x04 0x03 0x0

有人能解释一下为什么我们用这种方式表示内存地址本身吗 “地址上的字=0x00”: 0x0403001,
我知道01,02,03,04每一个都是一个字节,但是有人能告诉我这个字节在哪里,它代表什么吗?寄存器中的存储单元?我完全糊涂了……

把内存想象成一个字节数组。”“地址上的单词”可以根据CPU设计者考虑的词来表示不同的东西。在您的情况下,一个单词似乎有32位长

所以
“地址上的单词=0x00:0x0403001”
表示:

'从存储单元
0x00
(包括)开始,“下一个”四个字节是
0x04 0x03 0x02 0x01


此外,“下一步”的含义也会根据CPU的端度而变化。可能是
0x04
存储在单元格
0x00
中,或者
0x01
存储在单元格中。

地址、内存或其他内容实际上与建筑物上的地址没有什么不同。有时是系统的、精心挑选的,有时是随意的。无论如何,有些建筑是消防站,有些是杂货店,有些是公寓,有些是房子等等。但是城市或国家使用的寻址系统可以将您的物品直接发送到该建筑物

当我们谈论软件中的地址时,也没什么不同。处于最低级别的处理器不知道或不关心有地址总线,一个地址投射到处理器外部的接口。在处理器和其他芯片、内存、usb控制器、硬盘驱动器控制器等周围添加每一层逻辑(如洋葱),就像信封上的地址部分一样,该地址的一部分被提取出来,读或写命令被传递给在其建筑物一侧佩戴该地址的个人逻辑

在没有任何上下文的情况下,您不能简单地询问地址0x0403001是什么。地址方案相当具体,他们的系统有成百上千或上万个基于arm的系统,所有这些系统都有不同的地址方案,地址可能指向任何东西,由于没有人响应该请求,因此该请求死亡并可能挂起处理器,或者可能是某个ram,或者可能是usb控制器、视频控制器或磁盘驱动器控制器中的寄存器

一般来说,您有读写操作,在本例中,这将是一旦信件发送到信封上地址的个人,信件内容包含说明。这样做(写),或得到这个,并邮寄回来(读)。就硬件而言,个人只是按照要求去做,不需要询问。如果是读取,则在该设备的上下文中执行读取。硬盘控制器读取特定地址可能是温度传感器,或包含电机转速的状态寄存器,也可能是最近从硬盘读取的一些数据。在内存的简单情况下,它可能只是一些内存,一些字节

读取的内容量也是处理器总线上指定的另一项,对于程序员可用的内容,不同处理器的读取量也不同。有时您可以请求读取或写入单个字节,有时是16位项或32或64位项,等等

然后你进入地址翻译。使用邮件类比,这有点像将您的邮件转发到另一个地址。你在信上写了一个地址,邮局对这个地址有一个转发请求,所以他们把你的地址改成新地址,然后完成信的投递。当你听说内存管理单元MMU,以及虚拟内存这个词的某些用途时,这就是正在发生的事情。假设我们想让程序员的生活变得简单,我们告诉每个人ram从地址0x00000000开始。这使得编译器更容易选择变量、数组和程序所在的内存位置,它可以基于该地址以相同的方式编译每个程序。但是,如果许多程序共享相同的内存,我怎么能让它们同时运行呢。嗯,他们没有。一个程序认为它正在写入地址0x00000000,但实际上有一个完全不同的唯一地址,它只属于该程序,比如地址0x10000000,mmu就像邮局的邮递员更改地址,处理器根据正在运行的任务的信息知道它需要将0x00000000转换为0x10000000。当另一个程序访问它认为是0x00000000的内容时,它可能会将该地址更改为0x11000000,而另一个0x00000000可能会映射到物理地址0x12000000。实际命中内存的地址称为物理地址,程序使用的地址称为虚拟地址,它不是真实的,它注定要被更改

这种mmu不仅使编译器和程序员的工作更轻松,而且mmu还使我们能够保护一个程序或操作系统不受另一个程序或操作系统的影响。应用程序以特定的保护级别运行,mmu使用该级别了解该用户可以执行的操作。如果一个程序生成的虚拟地址超出了它的地址空间,比如说系统有1G的内存,程序试图寻址1G加上多一点。mmu不是将其转换为物理地址,而是向处理器生成一个中断,该中断将处理器切换到具有更多权限(基本上是操作系统)的模式,然后操作系统可以决定尝试使用其他类型的虚拟内存,并允许程序具有更多内存,或者,它可能会终止该程序,并向用户发出警告消息,说明某个或某个程序出现保护故障并被终止

地址方案f