特权指令与非特权指令

        在计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(系统外层的应用程序,简称应用程序)。对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”要执行一些特权指令,而“被管理程序”(用户自编程序)出于安全考虑不能执行这些特权指令。

        一、特权指令:是指不允许用户直接使用的指令。(只能在CPU处于内核态时执行)执行的操作通常会影响整个系统的硬件资源全局状态其他进程的运行环境

1、I/O 指令

2、内存管理指令

3、中断和异常处理指令:CLI(清除中断标志-关中断)和STI(设置中断标志-开中断)

4、系统控制指令:HLT (停机指令 - 停止CPU执行)

5、模式切换指令 (通常由特殊机制触发,但本身是特权操作):SYSCALL / SYSENTER (从用户态快速进入内核态的系统调用指令-执行它们本身需要用户态权限,但实际切换操作在硬件层面是特权的

IRET / SYSRET / SYSEXIT (从中断/异常/系统调用返回到用户态 - 只能在特权态执行)

6、特定平台管理指令:如电源管理指令 (HLT 也可算作此类)、性能监控计数器访问指令等

       二、 非特权指令:是只允许用户直接使用的指令(可以在CPU处于用户态和内核态时执行)它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。

  1. 数据传送指令: MOVPUSHPOPLEAXCHG (操作通用寄存器和用户态可访问内存)。

  2. 算术运算指令: ADDSUBMULDIVINCDECCMP

  3. 逻辑运算指令: ANDORXORNOTTESTSHL/SALSHRSARROLROR

  4. 控制转移指令 (在用户代码段内): JMPJcc (条件跳转), CALLRETLOOP

  5. 字符串操作指令: MOVSCMPSSCASLODSSTOS (操作用户态可访问内存)。

  6. 标志操作指令: CLCSTCCMC (操作进位标志等,不影响中断标志 IF)。

  7. 空操作指令: NOP

  8. 浮点运算指令: FADDFSUBFMULFDIVFLDFST 等 (操作 FPU/SSE/AVX 寄存器)。

  9. SIMD 指令: PADDBPMULLWADDPSMULPD 等 (操作 XMM/YMM/ZMM 寄存器)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值