计算机启动时,第一条指令是怎么写入内存

时间:2022-04-05 15:03:37
既然CPU复位启动时从某个地址(如8086的0xFFFF0)开始执行,那么是谁把第一条指令放在那里的呢?

10 个解决方案

#1


这个地址是什么地址呢?肯定不能是ram的地址吧

#2


应该是硬件做好的吧,ram可以映射到那个地址

#3


因为这是cpu复位之后的第一条指令,所以第一条要求就是此处为直接可寻址memory(有用nand flash的,但也是用逻辑做了硬的驱动和地址解码)。
一般此处的介质为:
1. rom(直接可寻址)
2. nor flash(直接可寻址)
3. sram(需要有逻辑把代码拷贝进去)
4. nand(需要有逻辑进行驱动和地址转换)
谁写进去的?当然是人干的,如果没人在非易失存储中写入bootloader,目前的cpu是无法启动的。

#4


第一条指令存储在ROM中的,CPU都会自带一些不大的ROM供CPU第一次启动

#5


放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。至于是谁放的,首先去这个地址取指令是硬件上做好的,指令在这个地址是bootloader里实现的,也就是人为写的。

#6


很实用的一个知识点

#7


CPU上电会在片选0上的固定地址去读第一条指令,硬件设计上一定会把ROM芯片挂接在片选0上。

#8


楼主可能认为复位后启动的地址就是内存地址,但是实际往往是诸如nor flash这样的设备地址。然后在前面的汇编代码里进行必要的初始化,包括内存的初始化,内存初始化完成后启动代码再将自己copy到内存中然后跳转运行。当然过程比这个复杂的多,可以找个体系结构的booter理解,比如arm的uboot

#9


起始位置一般都是rom

#10


该回复于2015-02-09 13:38:31被管理员删除

#1


这个地址是什么地址呢?肯定不能是ram的地址吧

#2


应该是硬件做好的吧,ram可以映射到那个地址

#3


因为这是cpu复位之后的第一条指令,所以第一条要求就是此处为直接可寻址memory(有用nand flash的,但也是用逻辑做了硬的驱动和地址解码)。
一般此处的介质为:
1. rom(直接可寻址)
2. nor flash(直接可寻址)
3. sram(需要有逻辑把代码拷贝进去)
4. nand(需要有逻辑进行驱动和地址转换)
谁写进去的?当然是人干的,如果没人在非易失存储中写入bootloader,目前的cpu是无法启动的。

#4


第一条指令存储在ROM中的,CPU都会自带一些不大的ROM供CPU第一次启动

#5


放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。至于是谁放的,首先去这个地址取指令是硬件上做好的,指令在这个地址是bootloader里实现的,也就是人为写的。

#6


很实用的一个知识点

#7


CPU上电会在片选0上的固定地址去读第一条指令,硬件设计上一定会把ROM芯片挂接在片选0上。

#8


楼主可能认为复位后启动的地址就是内存地址,但是实际往往是诸如nor flash这样的设备地址。然后在前面的汇编代码里进行必要的初始化,包括内存的初始化,内存初始化完成后启动代码再将自己copy到内存中然后跳转运行。当然过程比这个复杂的多,可以找个体系结构的booter理解,比如arm的uboot

#9


起始位置一般都是rom

#10


该回复于2015-02-09 13:38:31被管理员删除