![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
x86
好喝不过一点点
这个作者很懒,什么都没留下…
展开
-
x86 mov和movabs区别
1、mov和movabs指令格式 MOV S, D。表示把S传送入D。MOV类指令,movb,movw,movl以及movq。分别表示传送不同长度的操作数。x86-64加了一条限制,2个操作数都位内存的引用。所以当内存位置复制到另外一个内存位置时,只能先把内存位置引用的值先传送给一个寄存器,然后在从该寄存器传送至另外一个内存位置。特别之处,movq和movabsq的区别:1、如果操作数是...原创 2019-08-23 15:14:33 · 9516 阅读 · 3 评论 -
x86传参ABI
32位模式下通过栈传参;64位模式下前6个参数通过寄存器传参,6个以上的参数通过栈传参;寄存器使用的顺序为:%rdi:第1个参数;%rsi:第2个参数;%rdx:第3个参数;%rcx:第4个参数;%r8:第5个参数;%r9:第6个参数;特殊用法fastcallfastcall调用约定和stdcall类似,它意味着:函数的第一个和第二个DWORD参数(或者尺寸更小的)通过ecx...原创 2019-09-02 15:17:51 · 1085 阅读 · 0 评论 -
x86权限比较规则(CPL/DPL/RPL)
1、定义x86架构下定义了4个特权级,分别是0~3。其中,0特权级最高,3特权级最低。CPL:Current Privilege Level,当前特权级,由当前运行代码段段选择子CS.RPL位域决定;DPL:Descriptor Privilege Level,描述符特权级,由待访问的数据段或代码段描述符的DPL位域决定;RPL:Request Privilege Level,请求特权级,...原创 2019-09-12 15:09:27 · 1955 阅读 · 0 评论 -
x86实模式下访问32位寄存器/指令
1、在16位实模式下,默认访问数据的大小是8位或者16位的;控制转移和内存访问时,偏移量也是16位的;2、处理器在16位实模式下运行时,可以使用32位的寄存器,执行32位运算;当处理器运行16位实模式下,既然把所有指令都看成16位的,那么怎么使用32位的寄存器,执行32位的运算呢?答案是利用指令前缀0x66和0x67。指令前缀0x66用来选择非默认值的操作数大小,0x67用来选择非默认值的地...原创 2019-09-18 15:19:36 · 940 阅读 · 1 评论 -
x86 SWAPGS
在中断或异常处理的entry代码处, 会执行SWAPGS切换到kernel GS, GS.base 是存储了中断stack 的地址。1、关于swapgs指令,手册描述如下:When FS and GS segment overrides are used in 64-bit mode, their respective base addresses are used in the linear...原创 2019-09-19 16:25:33 · 3332 阅读 · 0 评论