CSAPP第三章——程序的机器级表示:学习笔记总结

花了半个多月,补完王爽老师的汇编语言后,跟着CMU的视频课+课本,学完了第三章的知识,最深的感触就是CSAPP无论是视频还是书的质量都非常的硬,不愧它的盛名。(lab6和课后的家庭作业还没做,之后再补)现在来对前面所学做一个总结。(大致按照CMU视频的顺序进行)一、Basics 基础1.使用指令新建、编辑、汇编、链接汇编语言程序①新建并编辑源代码命令:getdit sum.c说明:gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。使用vi或者vim同样可以实现新建与编辑。②预处理
摘要由CSDN通过智能技术生成

花了半个多月,补完王爽老师的汇编语言后,跟着CMU的视频课+课本,学完了第三章的知识,最深的感触就是CSAPP无论是视频还是书的质量都非常的硬,不愧它的盛名。(lab6和课后的家庭作业还没做,之后再补)
现在来对前面所学做一个总结。(大致按照CMU视频的顺序进行)

一、Basics 基础

1.使用指令新建、编辑、汇编、链接汇编语言程序
①新建并编辑源代码
命令:getdit sum.c
说明:gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。使用vi或者vim同样可以实现新建与编辑。
②预处理【sum.c -> sum.i】
命令:gcc -E sum.c -o sum.i 【sum.c -> sum.i】
说明:预处理时,编译器会将C源代码中包含的的头文件编译进来
③编译 【sum.i -> sum.s】
命令:gcc -S sum.i -o sum.s
说明:gcc首先检查代码的规范性,是否有语法错误,确定代码实际要做的工作,让后将代码翻译成汇编语言
④汇编【sum.s -> sum.o】
命令:gcc -c sum.s -o sum.o
说明:gcc进行汇编阶段,将编译阶段生成的”.s”文件转成二进制目标代码(可重定位目标文件)
⑤链接【sum.o -> sum】
命令:gcc sum.o -o sum
说明:链接过程将有关的目标文件彼此连接起来,使得所有目标文件成为一个能够执行的统一整体。
⑥执行
命令:./sum
说明:执行可执行文件,输出结果

2.数据格式
b(byte):字节
w(word):1字=2字节
l(double words):双字=4字节
q(quad words):四字=8字节
对应的mov指令为:
movb movw movl movq

al:1字节
ax:2字节
eax:4字节
rax:8字节

3.数据传送
传内存数据的格式:在这里插入图片描述
传地址的格式:
在这里插入图片描述
扩展:
扩展分为零扩展和符号扩展,若要扩展后保持相同的数,对于有符号数,符号扩展(即高位补原来的最高位)可以保证扩展前后相同,对于无符号数,零扩展可以保证扩展前后相同。指令,以字节->字为例,其他同样格式。
零扩展:movzbw dl,ax
符号扩展:movsbw dl,ax
另,符号扩展多一个cltq指令,表示将%(eax)符号扩展->rax
另,当给32位寄存器赋值时,总会将高位自动改为0

4.寄存器作用

0-63 0-31 0-15 8-15 0-7 使用惯例
%rax %eax %ax %ah %al 保存返回值
%rbx %ebx %bx %bh %bl 被调用者保存
%rcx %ecx %cx %ch %cl 第4个参数
%rdx %edx %dx %dh %dl 第3个参数
%rsi %esi %si %sil 第2个参数
%rdi %edi %di %dil 第1个参数
%rbp %ebp %bp %b
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值