保护模式下的内存访问

本文详细探讨了保护模式下的内存访问,包括直接读写内存指令和代码执行类指令。主要内容涉及合法读写内存的过程,如数据段和代码段的访问限制,以及特权级检查。文中列举了非法内存访问的常见情况,如未初始化段选择器、错误的跳转指令等,并通过实例分析了错误代码的后果。最后总结了保护模式中避免内存访问错误的关键点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随便说说:

保护模式下的内存访问模式、方法,而这个保护模式下的内存访问模式在实模式与保护模式已经介绍过是什么,这次来具体点看。

访问内存

1.首先确定好哪些是属于访问内存?

1.1最容易确定莫过于直接对内存空间进行读写的指令

例如:

[bits 32]
mov [ds:esi],123        ;write
mov eax,[ds:esi]        ;read
add [ds:esi],123        ;read/write
sub [ds:esi],123        ;read/write
shr [ds:esi],8          ;read/write
...

1.2代码执行类的指令(jmp,call…)

不仅仅是数据读写,包括代码的执行实际上也是对内存的读取,因为jmp、call这类跳转指令,终归就是读取跳转目的地的内容,再将其作为指令执行。

2.读写内存过程

实模式与保护模式(里面讲到描述符)提到过会先判断访问是否合法,合法在进行读写。
先来看这两个表:
对于数据段分别为(X,E,W,A)

X E W A 描述符类别 含义
0 0 0 x 数据 只读
0 0 1 x 数据 读、写
0 1 0 x 数据 只读,向下扩展
0 1 1 x<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值