腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(907)
视频
沙龙
1
回答
为什么
在
切
换到
保护模式
时
,
MOV
、
CR0
和
JMP
指令
必须
来自
身份
映射
的
页面
?
、
、
、
、
为什么
我们
必须
将
mov
cr0
和
jmp
指令
放到一个
身份
映射
的
页面
中? 我一直在用谷歌搜索这个问题,但我不能理解结果。
浏览 22
提问于2020-03-05
得票数 2
回答已采纳
2
回答
汇编程序- PC
在
LGDT
指令
执行后崩溃。
、
、
、
、
目录 org 0x7c00
浏览 3
提问于2021-06-27
得票数 1
回答已采纳
2
回答
切
换到
保护模式
、
、
、
有没有简单
的
代码可以切
换到
保护模式
?(对于NASM)是的-我尝试使用Google来解决它。我还是不明白
为什么
..。如何加载位于VBR后面的内核(在此模式下)?
浏览 5
提问于2013-11-01
得票数 0
1
回答
OS开发:切
换到
32位模式会破坏我
的
代码
、
、
、
、
编辑:当我把32位后
的
所有东西都移到disk_double_error上
时
,问题就解决了,但是现在它仍然是坏
的
,它会显示消息,但是当我点击Y
时
,它只是重新启动/重新启动系统,原因可能是什么呢?你好,我只是为了好玩而写一个简单
的
os,我制作了引导加载程序,我显示了一些消息并读取了磁盘,但是当切
换到
32位
保护模式
时
,我做
的
所有事情都不能正常显示。lgdt
和
其他开关添加到32位后,它根本不显示任何东西,所以我认为
浏览 0
提问于2018-03-24
得票数 1
回答已采纳
1
回答
如何在
CR0
中设置PE标志以启用受
保护模式
?
、
、
、
、
我试图理解机器是如何从电源转到运行内核
的
。从我收集到
的
信息来看,
在
引导过程中切
换到
保护模式
是很有用
的
,以便访问更可寻址
的
内存,即使我们最终将切
换到
一个更常规
的
虚拟内存计划,
页面
目录
和
页表以及分段关闭。看来,要切
换到
受保护
的
模式3,
必须
做好以下工作: 将控制寄存器
CR0
浏览 2
提问于2014-10-31
得票数 6
2
回答
引导加载器-将处理器切
换到
保护模式
、
、
、
、
0xffed6:
mov
%eax,%
cr0
从它
的
外观来看,这段代码设置中断表
和
描述符表,然后打开受保护
的
模式
为什么
在
BIOS中进入
保护模式
?引导加载器不应该在真实模式下运行(顺便说一下,
为什么
它需要在实模式下运行?)我搜索
的
,但是没有找到ljmpl
指令
的确切工作方式,它
和
ljmp<e
浏览 4
提问于2011-03-06
得票数 28
回答已采纳
2
回答
跳入
保护模式
时
的
三重故障
、
、
、
、
我正在开发一个引导加载程序,它将在切
换到
保护模式
后引导到一个简单
的
内核中。我使用作为教程,
在
第四章或第五章
的
某个地方。理论上,它应该以16位实模式启动,将内核加载到内存中,切
换到
32位
保护模式
,并开始执行内核代码。 or eax, 0x1
mov</
浏览 5
提问于2016-04-12
得票数 4
回答已采纳
2
回答
无法
在
保护模式
下访问32位
、
、
、
、
在
开发一个小型内核
时
,我
在
使用APIC引导应用程序处理器
时
遇到了一个奇怪
的
问题。
浏览 5
提问于2021-08-09
得票数 0
回答已采纳
1
回答
将实模式分页设置为64位长模式开关。
、
、
、
、
但是,
在
设置分页、加载我
的
GDT或转换(im直接
来自
真实模式)
的
过程中,有一个错误会导致机器重新启动。我
的
代码是基于
的
。; size of GDT DATA_SEG equ gdt_start.gdt_data
mov
edi, 0x1000
m
浏览 2
提问于2016-12-11
得票数 3
回答已采纳
1
回答
为什么
NASM不正确地初始化寄存器
的
值?
、
、
我想要一个没有BIOS
的
屏幕上打印字符串
的
驱动程序(
在
保护模式
下)。我使用
的
是QEMU (使用qemu-system-x64_86)
和
NASM。我试图将0xb 8000地址移到ebx中,但是出了问题,下面是第二个引导加载程序阶段
的
代码,在这里我试图切
换到
PM并调用我
的
驱动程序函数:org 0x7e00
mov
eax,
cr0
or
浏览 1
提问于2019-04-06
得票数 0
回答已采纳
3
回答
如何在x86_64上进入64位模式
、
、
我
在
xv6 中找到了一个很好
的
程序集,它向我展示了如何从16位到32位
保护模式
。 有没有人知道一个类似的例子进入64位模式?(通过或不使用32位模式。)
浏览 1
提问于2014-04-09
得票数 6
回答已采纳
1
回答
要求澄清“段寄存器继续指向与实地址模式相同
的
线性地址”
、
、
、
、
问题是
在
英特尔i386上,代码段选择器从实模式切
换到
保护模式
时
的
持续有效性问题。交换代码如下(摘自bootasm.S of xv6 x86版本): 9138 #从实模式切
换到
保护模式
。9141 lgdt gdtdesc 9142 movl %
cr0
,%eax 9143 orl $CR0_PE,%eax 9144 movl %eax,%cs 0 9150 #通过使用长
jmp
9151#重新加载%cs
和
%eip完成32
浏览 5
提问于2021-04-07
得票数 0
回答已采纳
2
回答
编写翻译查找缓冲区
、
、
、
这是一个很好
的
概念,我们可以把它当作一个连续块,而不需要关心它是否
在
物理RAM中是连续
的
,或者它是否
在
硬盘上。据我所知,虚拟地址
和
物理地址之间
的
映射
是由CPU (或至少
在
硬件上)使用转换查找缓冲区直接完成
的
。我假设内核
在
某种程度上维护了TLB
的
内容,但是这里有一些问题,所以我有三个问题: 用于查询、读取
和
写入TLB内容
的
具体汇编程序说明是什么?I
在</em
浏览 3
提问于2014-02-19
得票数 3
回答已采纳
2
回答
在
x86 32位中禁用分页
、
、
、
、
我尝试直接写入物理内存位置,因此我使用一个汇编函数首先禁用分页,写入值,然后重新启用分页,但由于某些原因,
在
尝试写值
时
仍会触发分页错误。据我所知,
在
x86- 32位中,通过翻转
cr0
中
的
位32来设置分页
的
开关,所以下面是我
的
汇编函数:
mov
8(%esp), %edx //value
mov
%
cr0
,
浏览 1
提问于2015-11-21
得票数 5
3
回答
实模式程序
和
保护模式
程序之间
的
真正区别是什么?
、
、
从操作系统
和
硬件
的
角度来看,我知道真实模式
和
保护模式
之间
的
区别。 但是我想弄清楚一个程序对真实模式或
保护模式
“了解”些什么?
在
查看源代码/目标代码
时
,如何判断它是否是实模式程序?
在
寻找答案
时
,我所能想到
的
就是“实模式”程序使用BIOS子例程
和
OS子例程,而“
保护模式
”程序只使用OS子例程。
指令
代码不同,因为寄存器
的
操作
浏览 0
提问于2013-10-27
得票数 12
回答已采纳
1
回答
.code16
和
.code32有什么区别?
、
、
、
、
我知道一些关于进入
保护模式
的
程序:以下是我
的
问题: :
在
保护模式
下使用.code16代码有效吗?.我发现在设置< code >D17</ code >寄存器
和
ljmp之前执行&
浏览 21
提问于2022-11-28
得票数 2
回答已采纳
1
回答
QEMU呼叫到错误
的
地址
、
、
、
我一直在做一个小
的
osdev项目。到目前为止,我已经开始使用A20、GDT、
保护模式
(32位)
和
磁盘加载来运行C代码,但是函数调用不起作用。正如您所看到
的
,3调用
指令
是完全正常
的
。这不应该发生,因为
在
函数调用(未触发)
和
函数(未触发)之后有cli
和
hlt
指令
。如果我使用gdb,
在
7e00上放置一个断点,内核
的
内存地址,
在
继续并使用si看到gdb进入函数调用之后,只
浏览 11
提问于2022-06-26
得票数 0
4
回答
汇编中
的
实验操作系统-无法
在
屏幕上显示字符(pmode)
、
、
、
、
事实上,我想要
的
是一个引导加载程序
和
一个第二个引导加载程序,它激活pmode并在屏幕上显示一个字符,使用视频内存(显然不是中断)。eax, 1
jmp
08h:ShowChar
mov
ax, 0x10问题是,我看不见屏幕上
的
字符。这可能是一个与内存有关
的
问题(我
必须
承认,我不太擅长内存寻址),比如段寄存器中
的<
浏览 4
提问于2013-01-17
得票数 2
回答已采纳
7
回答
禁用L2/L1缓存
、
我试图禁用我
的
CPU
的
内部
和
外部内存缓存,我
的
配置如下:-DELL WorkStation -Intel Core 2 Duo E6550 2.33 GHz -Ubuntu 8.10外文
mov
eax,40000000 H;设置位30
mov
<e
浏览 0
提问于2009-07-10
得票数 5
8
回答
N是负,正还是零?返回1、2或4
、
、
、
在
Power体系结构中,条件寄存器
CR0
(x86上
的
条件寄存器)几乎在任何
指令
上都被更新。它是这样设置
的
。如果最后结果为阴性,则
CR0
值为1,如果最后结果为正,则为2,否则为4。我会仔细地测试你所有的代码
的
速度,你将是第一个知道谁是赢家。 @jalf:关于你
的
第一个建议,我并不是
在
每条
指令
上计算
CR0
。我宁愿保留一个lastResult变量,当(
和
如果)下面的
指令</em
浏览 6
提问于2012-03-04
得票数 35
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
MCU做死循环时,国外工程师为什么喜欢for(;;) ?
每个程序员都应该了解的硬件知识
深入分析POP/MOV SS漏洞
Caffeinated 6.828:实验 1:PC 的引导过程
电气大神给的12条PLC编程建议,值得点赞收藏!
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
云直播
活动推荐
运营活动
广告
关闭
领券