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

kingflight 2014-12-30 01:11:48
既然CPU复位启动时从某个地址(如8086的0xFFFF0)开始执行,那么是谁把第一条指令放在那里的呢?
...全文
1559 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly 100% 2015-01-12
  • 打赏
  • 举报
回复
起始位置一般都是rom
goodyun82 2015-01-07
  • 打赏
  • 举报
回复
楼主可能认为复位后启动的地址就是内存地址,但是实际往往是诸如nor flash这样的设备地址。然后在前面的汇编代码里进行必要的初始化,包括内存的初始化,内存初始化完成后启动代码再将自己copy到内存中然后跳转运行。当然过程比这个复杂的多,可以找个体系结构的booter理解,比如arm的uboot
xie_thomas 2015-01-04
  • 打赏
  • 举报
回复
CPU上电会在片选0上的固定地址去读第一条指令,硬件设计上一定会把ROM芯片挂接在片选0上。
猪头三小队长 2014-12-31
  • 打赏
  • 举报
回复
因为这是cpu复位之后的第一条指令,所以第一条要求就是此处为直接可寻址memory(有用nand flash的,但也是用逻辑做了硬的驱动和地址解码)。 一般此处的介质为: 1. rom(直接可寻址) 2. nor flash(直接可寻址) 3. sram(需要有逻辑把代码拷贝进去) 4. nand(需要有逻辑进行驱动和地址转换) 谁写进去的?当然是人干的,如果没人在非易失存储中写入bootloader,目前的cpu是无法启动的。
yazhoubei132 2014-12-31
  • 打赏
  • 举报
回复
很实用的一个知识点
2014-12-31
  • 打赏
  • 举报
回复
放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。至于是谁放的,首先去这个地址取指令是硬件上做好的,指令在这个地址是bootloader里实现的,也就是人为写的。
LouisScola 2014-12-31
  • 打赏
  • 举报
回复
第一条指令存储在ROM中的,CPU都会自带一些不大的ROM供CPU第一次启动
G_Start_G 2014-12-30
  • 打赏
  • 举报
回复
应该是硬件做好的吧,ram可以映射到那个地址
阿曼 2014-12-30
  • 打赏
  • 举报
回复
这个地址是什么地址呢?肯定不能是ram的地址吧

1,025

社区成员

发帖
与我相关
我的任务
社区描述
Linux /Unix kernel支持不同的硬件体系,X86, ARM, MIPS, 等等
社区管理员
  • CPU和硬件区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧