装载与汇编
静态链接的程序的执行过程
动态链接的程序的执行过程
x86&amd64汇编简述
常用汇编指令:
-
mov
-
lea
-
add/sub
-
push/pop
-
cmp
-
jmp
-
j[condition]
-
call/ret
-
leave
-
...
mov指令:赋值
lea指令:取址
push指令:入栈 pop指令:出栈 (注意:入栈和出栈均以字为单位操作)
leave指令:
在函数返回时,恢复父函数栈帧的指令
等效于:
MOV ESP, EBP
POP EBP
ret指令:函数返回时,控制程序执行流返回父函数的指令
等效于:pop rip
jmp[condition]指令: 就是汇编课程中学的ja,jae,jb,jbe,jz,jnz等等。依据符号位判断是否跳转。
溢出的问题:
正数+正数,不可能等于一个负数,如果出现了,就是溢出。同理,负数+负数如果结果为正数,也发生了溢出。溢出的概念,只发生在有符号数