标签:CSAPP code into register Machine 地址 program address part
Machine Level Programming
-
machine code <-> assembly code
-
code -> low level, how to generate by GCC
-
intel 64(x86)
-
instruction set(hardware designers provide to users)
-
register
Turning C into object code
C program(.c)
-(Compiler)->
Assembly Program(.s)
-(Assembler)->
Object program(.o) (+Static libraries(.a))
-(Linker)->
Executable program
Compiling into Assembly
-
汇编内容
-
pushq : 压栈
-
movq : 复制,使用内存或寄存器地址
-
popq : 弹栈
-
call : 调用函数
-
ret : 从特定函数返回
-
.开头:给其他部分提供的信息
-
-
汇编中的数据类型
-
整型和浮点
-
本质都是字节序列
-
没有数组一类的结构
-
-
反汇编器:从机器代码到汇编代码,还会包含某些原始汇编代码中没有的底层指令。
-
objdump
-
gdb也有这个功能
-
-
所有命名全部消失,转化为位置
x86-64 Integer Register
-
%r for 64bit and %e for 32bit
-
special : %rsp stack pointer
-
operand types
-
Immediate: Constant integer data, prefixed with $
-
Register: %
-
Memory: address given by register, like (%rax)
-
-
Immediate doesn't have real position, and memory to memory is forbidden.
-
Memory Addressing
-
(R):Mem[Reg[R]]
-
D(R):Mem[Reg[R]+D] (Displacement)
-
-
Argument registe:%rdi, %rsi
-
lea: compute an address, and store it into the register.
-
load effective address
-
实际类似于c语言的取地址运算&,即其并未根据计算出的地址去访问内存,而只是将计算出的地址存入目的操作数
-
可以将数值输入地址计算的函数以实现简便运算?
-
-
Move
-
b,w,l,q(length)
-
z,s(how to lengthen)
-
movabsq: (directly use bit pattern, regardless of two's complementary form of negative numbers)
-
-
push & pop
-
标签:CSAPP,code,into,register,Machine,地址,program,address,part 来源: https://www.cnblogs.com/Philematology/p/15867871.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。