
汇编
小虎随笔
这个作者很懒,什么都没留下…
展开
-
函数调用约定
三种函数调用约定(cdecl、stdcall、fastcall)原创 2021-03-18 00:29:14 · 401 阅读 · 0 评论 -
常用的汇编指令
一、一般指令MOV(内存存内容)、ADD(加运算)、SUB(减运算)、and(与运算)、OR(或运算)、XOR(异或运算)、NOT(非运算)NOT运算要说明一下,后面只能跟内存或寄存器,不能跟立即数。以上指令有一个要注意的点,就是不能内存到内存的运算。二、指令MOVS...原创 2021-07-24 16:50:16 · 4037 阅读 · 0 评论 -
汇编之内存
一、概念每一个应用程序都会有自己独立的4GB内存空间。但这进程上的4GB并不是真实的,真正需要读写时,进程的内存要映射到物理内存上。二、内存地址内存太大了,就不能给它起名字,所以就只能用编号。在读取或写入数据时,就用编号,这个编号就是内存地址(32位)。每一个编号对应的就是一个字节,也就是8位。Q: 那这个4GB是怎么来的呢?其实就是由编号是32位大小来的。也就是说其最大寻址范围位0XFFFFFFFF,每个寻址地址占1个字节,也就是8位,也即是说 (FFFFFFFF...原创 2021-07-24 08:42:11 · 822 阅读 · 0 评论 -
通用寄存器
寄存器位于CPU中,32位寄存器能够提供8位、16位、32位的寄存器。8个通用寄存器是指寄存器中想存什么就存什么,还有一些寄存器是专用的,有专业用途。一、通用寄存器1.1寄存器 1.2不同位数寄存器含义16位AX是EAX一半,且只有低一半,就像下图的0001一样。AL是低8位,AH是高8位。例如:MOV AL,3 MOV AH,2,结果就是:寄存器之间mov宽度要求一致。二、指令mov:将立即数或一个寄存器的值存到另一个寄存器中。例如 M...原创 2021-07-23 07:57:46 · 3681 阅读 · 0 评论 -
计算机的加减乘除(位运算)
计算机只能操作二进制数,也就是0和1。因此也不可能会使用+-*/。那计算机是如何实线加法运算的呢?那这就要依靠位运算了!一、位运算1.与运算1.1物理电路串联电路中两开关,只有两开关都为1,电路才能连通。1.2运算效果and(&)例如:101 & 110 = 1002.或运算2.1物理电路电路并联上两开关,只要有一个开关置1,电路就连通了。2.2运算效果or(|)例如:101 | 110 = 1113.异或运算..原创 2021-07-22 22:59:22 · 2099 阅读 · 1 评论 -
汇编之寄存器
汇编之寄存器 8位寄存器 16位寄存器 32位寄存器 AL AX EAX CL CX ECX DL DX EDX BL BX EBX AH SP .原创 2021-02-20 21:00:39 · 171 阅读 · 0 评论 -
高地址和低地址
举例:这就是低地址向高地址增长0x0000001 ->0x0000002-> ... -> 0x0000092堆是向高地址增长的。而栈是向低地址增长的。举例:原创 2021-04-10 14:38:35 · 1621 阅读 · 0 评论 -
为什么FFFF FFFF是4GB
地址中每一个地址代表着一个字节。其中2的10次方代表1KB;2的20次方代表1MB;2的30次方代表1GB0~F 等价于0~1111 所表示的字节范围是2的4次方(用等比数列前n项合公式)= 16字节。0~FF 代表 256byte。0~FFFF 代表 2的16次方为64kB。0~FFFFFFFF 代表 2的32次方代表着 4*1GB 为4GB。...原创 2021-04-18 02:08:36 · 5219 阅读 · 0 评论