Commonly used instruction pole addressing modes

Addressing mode

指令寻址
    顺序寻址方式
       EIP增加
    跳跃寻址方式
       下条指令的地址码不是由程序计数器给出,而是由本条指令给出
操作数寻址
    寄存器寻址 register addressing
        指令 movl %eax,%edx
        含义 edx = eax
    立即寻址 immediate
        指令 movl $0x123,%edx   
        含义 edx = 0x123
    直接寻址 direct
        指令 movl 0x123,%edx
        含义 edx = *(int32_t*)0x123
    间接寻址 indirect
        指令 movl (%ebx),%edx
        含义 edx = *(int32_t*)ebx
    变址寻址 displaced addressing
        指令 movl 4(%ebx),%edx
        含义 edx = *(int32_t*)(ebx + 4)
        
    b,w,l,q分别代表8位,16位,32位和64位

Several important assembly instructions

    pushl %eax 
        相当于:
        subl $4,%esp
        movl %eax,(%esp)
    
    popl %eax
        相当于:
        movl (%esp),%eax
        addl $4,%esp
    
    call 0x12345
        相当于:
        pushl %eip(*)
        movl $0x12345,%eip(*)  //(*)表示eip不能被直接成员直接操作,要操作eip需要结合push 等
    ret 
        相当于:
        popl %eip(*)
    leave 
        相当于:
        movl %ebp, %esp
        popl %ebp
        //leave 是恢复堆栈指令,用在函数返回时用来恢复调用方的堆栈信息
        //进入一个新的函数时,一般都会执行下面两条指令
        pushl %ebp
        movl %esp,%ebp

Guess you like

Origin blog.csdn.net/yfbdxz/article/details/111320793
Recommended