X86 APIC汇编的一些不懂得地方

huang356 2018-06-02 11:44:35
本人 在业余时间学习APIC编程 想探究CPU究竟怎样进行多核心协同工作
但本人卡在IA32_APIC_BASE的基地址这个地方 FEE00000H这个位置
假如我的电脑没有4G的内存 只有1G 我在哪里去找这个地址?
...全文
1926 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huang356 2018-06-13
  • 打赏
  • 举报
回复
引用 8 楼 DelphiGuy 的回复:
这些只是皮毛,唯手熟尔
我自学了大概2年 主要在汇编和计算机结构方面 纯兴趣 这方面工作是不是很少?
  • 打赏
  • 举报
回复
这些只是皮毛,唯手熟尔
huang356 2018-06-12
  • 打赏
  • 举报
回复
引用 6 楼 DelphiGuy 的回复:
比如这个975x:https://www.intel.com/Assets/PDF/datasheet/310158.pdf 虽然这个比较早了,但是同一家的芯片组基本设计上是有兼容性的,比如intel芯片组的内存控制器永远是PCI总线0设备0功能0,AMD芯片组的应该是总线0设备24功能2
大哥你是做什么工作的? 能了解这么多
  • 打赏
  • 举报
回复
比如这个975x:https://www.intel.com/Assets/PDF/datasheet/310158.pdf 虽然这个比较早了,但是同一家的芯片组基本设计上是有兼容性的,比如intel芯片组的内存控制器永远是PCI总线0设备0功能0,AMD芯片组的应该是总线0设备24功能2
  • 打赏
  • 举报
回复
你搜具体芯片组的datasheet即可
huang356 2018-06-11
  • 打赏
  • 举报
回复
引用 3 楼 DelphiGuy 的回复:
这要看内存控制器资料,以前是集成在北桥芯片里,叫MCH(Memory Controller Hub),后来内存控制器集成到处理器中,叫做Integrated Memory Controller。注意intel和AMD的内存控制器在寄存器级并不兼容。 参考:https://www.intel.com/content/dam/doc/datasheet/io-controller-hub-10-family-datasheet.pdf Table 9-4. Memory Decode Ranges from Processor Perspective
这资料没找到MCH相关内容的详细说明呢? 这个是不是南桥的说明书? ICH10对应G43 P43等北桥吧? 老师 有没有北桥的说明书呢?
  • 打赏
  • 举报
回复
这要看内存控制器资料,以前是集成在北桥芯片里,叫MCH(Memory Controller Hub),后来内存控制器集成到处理器中,叫做Integrated Memory Controller。注意intel和AMD的内存控制器在寄存器级并不兼容。 参考:https://www.intel.com/content/dam/doc/datasheet/io-controller-hub-10-family-datasheet.pdf Table 9-4. Memory Decode Ranges from Processor Perspective
huang356 2018-06-11
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
CPU物理地址映射到哪里由内存控制器决定
那么怎么对内存控制器进行编程?
  • 打赏
  • 举报
回复
CPU物理地址映射到哪里由内存控制器决定
目录 1 引子 2 1.1 上电 2 1.2 BIOS时代 3 1.3 内核引导程序 5 2 内核映像的形成 8 2.1 MakeFile预备知识 9 2.1.1 Makefile书写规则 9 2.1.2 Makefile变量 10 2.1.3 条件判断 14 2.1.4 函数 17 2.1.5 隐含规则 17 2.1.6 定义模式规则 19 2.1 KBuild体系 23 2.1.1 内核目标 24 2.1.2 主机程序 26 2.1.3 编译标志 27 2.2 内核编译分析 28 2.2.1 编译配置 29 2.2.2 寻找第一个目标 32 2.2.3 prepare和scripts目标 38 2.2.4 递归编译各对象 41 2.2.5 链接vmlinux 44 2.2.6 制作bzImage 50 3 实模式下的内核代码 57 3.1 内核映像内存布局 58 3.2 实模式汇编代码header.S 60 3.2.1 无用的bootsect代码 60 3.2.2 初始化头变量hdr 63 3.2.3 准备实模式下C语言环境 64 3.3 实模式代码main函数 69 3.3.1 复制初始化头变量 71 3.3.2 初始化堆 74 3.3.3 确保支持当前运行的CPU 75 3.3.4 设置BIOS的x86模式 76 3.3.5 内存的检测 78 3.3.6 设置键盘属性 81 3.3.7 填充系统环境配置表 82 3.3.8 填充IST信息 83 3.3.9 设置Video模式 83 3.4 实模式代码go_to_proteced_mode函数 91 3.4.1 禁止可屏蔽和不可屏蔽中断 92 3.4.2 打开A20地址线 93 3.4.3 安装临时全局描述符表 99 3.4.4 第一次启动保护模式 101 4 保护模式下的内核代码 107 4.1 32位x86保护模式代码 107 4.1.1 内核解压缩的前期工作 108 4.1.2 解压缩内核 111 4.1.3 第二次启动保护模式 121 4.1.4 第一次启动分页管理 124 4.1.5 初始化0号进程 128 4.2 向start_kernel进发 131 4.2.1 初始化中断描述符表 132 4.2.2 第三次启动保护模式 137 4.2.3 启动x86虚拟机 141 5 走向现代:start_kernel函数 144 5.1 初始化同步与互斥环境 148 5.1.1 屏蔽中断 148 5.1.2 启动大内核锁 152 5.1.3 注册时钟通知链 153 5.1.4 激活第一个CPU 155 5.1.5 初始化地址散列表 160 5.1.6 打印版本信息 161 5.2 执行setup_arch()函数 166 5.2.1 拷贝可用内存区信息 171 5.2.2 获得总页面数 175 5.2.3 着手建立永久内核页表 177 5.2.4 第二次启动分页管理 181 5.2.5 建立内存管理架构 186 5.2.6 添砖加瓦 192 5.3 设置每CPU环境 206 5.4 初始化内存管理区列表 211 5.5 利用early_res分配内存 214 5.6 触碰虚拟文件系统 223 5.7 初始化异常服务 224 5.8 初始化内存管理 230 5.8.1 启用伙伴算法 230 5.8.2 初始化slab分配器 241 5.8.3 初始化非连续内存区 250 5.9 初始化调度程序 251 5.10 初始化中断处理系统 256 5.10.1 设置APIC中断服务 256 5.10.2 初始化本地软时钟 264 5.10.3 软中断初始化 268 5.10.4 初始化定时器中断 271 5.11 走进start_kernel尾声 273 5.11.1 初始化slab的后续工作 273 5.11.2 启动console 275 5.11.3 一些简单的函数 276 5.11.4 校准CPU时钟速度 279 5.11.5 创建一些slab缓存 282 5.12 安装根文件系统 287 5.12.1 创建VFS相关slab缓存 288 5.12.2 安装rootfs 291 5.12.3 安装proc文件系统 296 6 后start_kernel时代 298 6.1 创建1号进程 298 6.2 子系统的初始化 306 6.3 启动shell环境 309

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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