Win32汇编-寄存器
-
如eax、ebx、ecx、edx、eip、esp、ebp、esi、edi等都是32位的寄存器
图片 1.png - 段寄存器
CPU有两个不同的工作方式:实模式、保护模式
实模式:使用“段地址:偏移地址”的方式访问内存数据
保护模式:装入段寄存器的不再是段地址,而是段选择符(Segment Selector),在编程过程中,使用偏移地址直接寻址即可
Win64汇编 - 寄存器
屏幕快照 2018-02-17 下午10.31.05.pngAT&T汇编 vs Intel汇编
-
基于x86架构的处理器所使用的汇编指令一般有2种格式
(1)Intel汇编
DOS(8086处理器)、Windows
Windows派系 -> VC编译器
(2)AT&T汇编
Linux、Unix、Mac OS、iOS(模拟器)
Unix派系 -> GCC编译器 -
AT&T 读作 “AT and T”(American Telephone & Telegraph的缩写)
-
作为iOS开发工程师,最主要的汇编语言是
64位AT&T汇编 -> iOS模拟器
64位ARM汇编 -> iOS真机设备
AT&T汇编 vs Intel汇编
屏幕快照 2018-02-17 下午10.34.54.pngAT&T汇编 vs Intel汇编 寻址方式
屏幕快照 2018-02-17 下午10.36.08.png64位AT&T汇编的寄存器
图片 1.png-
x86-64bit有16个64位寄存器
rax、rbx、rcx 、rdx、rsi、rdi、rap、rsp
r8、r9、r10、r11、r12、r13、r14、r15 -
寄存器的具体用途
rax作为函数返回值使用
rsp指向栈顶
rdi、rsi、rdx、rcx、r8、r9存储函数参数,其余参数用栈存储(从rsp开始第7个参数,rsp+8开始第8个,以此类推)
64位AT&T汇编 – 栈帧
栈帧(Stack Frame Layout)
就是一个函数执行的环境
包括:参数、局部变量、返回地址等
图片 1.png
网友评论