X86 LSS指令详解
SDM指令功能描述(LSS)
总体描述:
用32位或48位或64位的数据加载16位SS段选择符和16或32位或64位的通用寄存器值,其中通用寄存器在目的操作数中。
LSS (16or32or64)通用寄存器, (32or48or64)内存变量的地址
伪代码:
64位模式:
if(selector is NULL && ((RPL==3) or (RPL!=3 && RPL!=CPL)))
{#GP
}
else if(描述符不合法)
{#GP
}
else if((selector->index超出了所在表的limit) or(RPL!=CPL) or(指向的描述符说明是不可写的数据段) or(DPL!=CPL))
{#GP
}
SS选择符赋值
SS描述符赋值
DEST=*(SRC)32位模式:
if(selector is NULL)
{#GP
}
else if(index超出了表的limit限制 or (selector->RPL != CPL) or(DPL!=CPL))
{#GP
}
else if(描述符中信息说明段不存在)
{#SS
}
SS选择符赋值
SS描述符赋值
DEST=*(SRC)16位实模式
SS=*(SRC+2)
DEST=*(SRC)
标志位影响:
无
相关异常:
GP:当显示或隐示的使用CS, DS, ES, FS, GS加上一个偏移作为内存访问地址时超出limit
SS:使用SS和一个指针访问内存超出ss段limit
UD:当使用了LOCK prefix的时候
示例代码:
struct lseg_st{long a;int16_t b;};
void test()
{struct lseg_st lss;lss.a = 0xffffffff;lss.b = 0x08;__asm__ volatile("lssl %0, %%eax\t\n"::"m"(les));
}
X86 LSS指令详解相关推荐
- X86 LEA指令详解
1.SDM指令功能描述(LEA) LEA 总体描述: 从第二个操作数(源操作数)计算有效地址,并将结果存入第一个操作数(目的操作数).源操作数是指定了一种访存操作的内存地址,目的操作数为一个通用寄存器 ...
- #pragma comment和#pragma 预处理指令详解
该宏放置一个注释到对象文件或者可执行文件. 例如,#pragma comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库. 和在工程设置里写上链入 ...
- arm-linux-ld中的参数,arm-linux-ld指令详解
arm-linux-ld指令详解 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来:其次,这些.o文件存在相互调用的关系 ...
- 九爷带你了解 nginx 日志配置指令详解
nginx日志配置指令详解 日志对于统计排错来说非常有利的. 本文总结了nginx日志相关的配置如 access_log.log_format.open_log_file_cache.log_not_ ...
- movsb movsw movsd 指令详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u013490896/article/d ...
- java中Freemarker list指令详解
java Freemarker中list指令主要是进行迭代服务器端传递过来的List集合. 定义 <#list nameList as names> ${names} </#list ...
- C#中的预处理指令详解
这篇文章主要介绍了C#中的预处理指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregion ...
- pragma comment的使用 pragma预处理指令详解
pragma comment的使用 pragma预处理指令详解 #pragma comment( comment-type [,"commentstring"] ) 该宏放置一个注 ...
- PUSHA/PUSHAD POPA/POPAD 指令详解
PUSHA/PUSHAD POPA/POPAD 指令详解 官方文档的解释 在<Intel Architecture Software Developer's Manual Volume 2:In ...
最新文章
- SpringMVC启动分析
- 关于验证码整理的新版本
- Java反射机制和动态代理实例
- SQLServer制作一个包含三个表的视图
- Android系统语言默认设置为简体中文
- 全国计算机等级考试题库二级C操作题100套(第59套)
- 摩托罗拉为什么要限制自家linux手机,摩托罗拉为何在安卓手机大放异彩的时候,突然开始衰败了呢?...
- Chapter1-6_Speech_Recognition(RNN-T Training)
- QT [004] QT SDK 和 QT quick 和 QT creator的区别历史和沿袭
- console错误合集
- InnoDB存储引擎体系架构
- 新计算机c盘太小,Windows自带C盘扩容方法,c盘太小怎么重新分区
- Failed to compile../public/UEditor/dialogs/template/template.html 1:0Module parse failed: Unexpec
- STM32F427/STM32F437高性能MCU微控制器介绍
- python天天向上的力量实验报告_Python练习11:天天向上的力量
- 关于text-decoration
- VCIP2020:面向机器视觉的HEVC码率控制
- #1135 : Magic Box
- VS2013新建Win32项目改配置x64位 图文详解
- 机器学习模型评价指标 -- 混淆矩阵