首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏shysh95

    CPU保护模式

    比如我们常用的push指令: 5.1 push压入立即数 当运行在实模式下时: 如果立即数是8位,会将其扩展为16位,然后再将sp-2 如果立即数是16位,则将sp-2 如果立即数是32位,则将sp- 4 当运行在保护模式下时: 如果立即数是8位,会将其扩展为32位,然后再将sp-4 如果立即数是16位,则将sp-2 如果立即数是32位,则将sp-4 5.2 push压入段寄存器 当运行在实模式下时, 当运行在保护模式下时,CPU压入4字节,然后再将sp-4。 压入通用寄存器或内存 push ax push eax push word [0x1234] push dword [0x1234] 无论实模式或者保护模式: 如果操作数是16位,sp-2 如果操作数是32位,sp

    1.2K60发布于 2021-07-16
  • 来自专栏Linux驱动

    LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA指令详解

    , { r0-r12,lr }   //每次传送前-4,且从右往左存储寄存器 //所以sp-4=lr,sp-8=r12,... sp-56=r0; 由于!

    3.7K90发布于 2018-01-03
  • 来自专栏Linux驱动

    LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA指令详解

    , { r0-r12,lr }   //每次传送前-4,且从右往左存储寄存器 //所以sp-4=lr,sp-8=r12,... sp-56=r0; 由于!

    1.7K90发布于 2018-01-03
  • 来自专栏鸿蒙开发笔记

    OpenHarmony内核源码分析(用栈方式篇) | 程序运行场地谁提供的

    满栈就是用栈过程中对地址的操作不能超过SP,所以你很少在计算过程中看到 把sp-4地址中的值给某个寄存器, 除非是特别的指令,否则不可能有这样的指令.第二: sub sp, sp, #8 和 add sp

    28410编辑于 2025-03-10
  • 来自专栏逆向技术

    16位汇编中的伪指令

    可以看出,这些正常了,先申请空间,然后保存环境,恢复的时候是先恢复环境,然后释放局部变量空间 这里申请局部变量空间的时候,并没有使用 sup sp,4  而是使用的加法指令 add sp-4 其实是一样的

    1.9K80发布于 2018-01-05
  • 来自专栏嵌入式ARM和Linux

    linux内核1-GNU汇编入门_X86-64&ARM

    也就是说,sp先减4,然后把r0的内容存入sp-4指向的地址处,然后再把sp-4写入到sp中。

    5.7K30编辑于 2022-08-10
  • 来自专栏韦东山嵌入式

    第008课 第1个ARM裸板程序及引申(点亮LED灯)

    , {fp, ip, lr, pc}:按高编号寄存器存在高地址,依次将pc、lr、ip、fp存入sp-4中; sub fp, ip, #4:fp的值为ip-4=4096-4=4092; sub

    1.3K10发布于 2020-09-30
  • 来自专栏全栈程序员必看

    汇编指令大全

    (3) 格式:PUSHFD        POPFD   功能:PUSHFD将标志寄存器32位内容压入堆栈SP←SP-4。POPFD将当前栈顶一个双字传送到32位标志寄存器中,SP←SP+4。   

    2K10编辑于 2022-09-06
领券