首页 > 其他分享 >读书笔记(CSAPP)02

读书笔记(CSAPP)02

时间:2023-04-22 22:33:21浏览次数:40  
标签:02 CSAPP mstore 读书笔记 Og gcc 指令 寄存器 操作数

gcc -Og -S mstore.c

上述命令行Og意思是优化等级, 指生成符合原始C代码整体结构的机器代码的优化等级, S是产生一个汇编文件, 就可以查看编译器产生的汇编代码

gcc -Og -c mstore.c

上述命令行则是生成".o"的目标代码, 它是二进制的, 是给机器执行的字节序列, 也就是对一系列指令的编码.

Linux系统的反汇编器, 命令行写法: objdump -d mstore.o

3.4 访问信息

  

   

 

 

  生成4字节数字的指令, 会把整数寄存器的高位字节置0, 这是IA31到x86-64扩展的规则

  

 

   上图中小括号的作用: 加了就是内存的值, 不加就是寄存器的值, 可以是指针哦

  数据传送指令: MOV类, 一条限制是两个操作数不能同时为内存位置; 寄存器部分的大小必须与指令最后一个字符匹配

   

  而下面两种指令源操作数可以是寄存器或内存, 目的操作数只能是寄存器, 目的是将较小的源值复制到较大的目的值:

 

   

   

 

   

 

   移位s代表是shift, a代表arithmetic, l, r, 代表左和右, 逻辑为何用h, why?

  

 

   图中印刷错误: 转换为8字应为cqto

 

  

 

   

 

   

 

   

   

   

   

 

   

   

   

 

  要想调试程序, 需要使用编译命令>gcc -Og -g -o prog main.c mstore.c         查到这个g代表为GDB产生符号资讯, 用于调试程序

  记住3.49练习题没看明白

  

 

 

 

 

 上图的双精度异或应是xorpd

 

标签:02,CSAPP,mstore,读书笔记,Og,gcc,指令,寄存器,操作数
From: https://www.cnblogs.com/captionAmazing/p/17276884.html

相关文章

  • Succinctly 中文系列教程(二) 20220109 更新
    Succinctly.NET本地化教程零、简介一、从本地化开始二、日期和时间三、周数四、时区五、数字六、货币七、文本八、附录SuccinctlyLinux教程一、简介二、Linux目录结构三、命令行界面四、目录五、查看文件和目录详情六、权限七、查看和编辑文件八、删除、移动和重命名文件和目......
  • Succinctly 中文系列教程 20220109 更新
    Succinctly会计教程一、会计简明指南二、收入和费用三、收入确认四、组织账目五、会计原则六、会计制度报告七、固定资产八、应收账款九、应付账款十、库存十一、工资单十二、总结十三、附录Succinctly安卓编程教程一、设置二、你好,安卓三、活动生命周期四、用户界面布局五、用户......
  • 2023-04-22 技术选型
    1.用户浏览器端&手机端:vue32.服务器端:.netCore3.负载均衡:Nginx4.CDN加速服务5.消息队列:Channel6.缓存层:Redis7.日志分析系统:Serilog日志组件+LogDashboard日志可视化组件8.数据库:MySQL、Oracle、MicrosoftSQLServer......
  • 【读书笔记】ISBN9787121353932
     【前言】是否所有人都可以公平地享受科技发展带来的生产力进步?AIGC应用越完善,内容生产的社会必要劳动时间就越少,人工就越没有价值。全社会新增劳动岗位的速度很快就会跟不上AIGC应用取代人工的速度,而不会使用AIGC应用的劳动者可能将无法获得收入、无法进行消费,从而逐步被剥离......
  • 联合省选2022游忆
    本文内容纯属虚构,如与事实相近,纯属偶然。本人文笔不好,请见谅。抑郁症患者勿入。话说是站在现在的角度写好呢,还是站在当时的角度写好呢。从1月18日开始写吧,先写省选前的记录,先写个大概,细节以后再补充。先粘几张排行榜:中途还有几场线下的模拟赛,但是都爆零/垫底了。noip......
  • 2022-04-22:给你两个正整数数组 nums 和 target ,两个数组长度相等。 在一次操作中,你可
    2022-04-22:给你两个正整数数组nums和target,两个数组长度相等。在一次操作中,你可以选择两个不同的下标i和j,其中0<=i,j<nums.length,并且:令nums[i]=nums[i]+2且令nums[j]=nums[j]-2。如果两个数组中每个元素出现的频率相等,我们称两个数组是相似的......
  • 编程一小时2023.4.22
    1.#include<iostream>usingnamespacestd;#definePI3.1415926classShape{public:virtualdoublearea()=0;};classCircle:publicShape{private:doubleradius;public:Circle(doublea){radius=a;}virtualdoublearea(){returnPI*radius*radius;}};cl......
  • 2022.4.22编程一小时打卡
    一、问题描述:请编写一个计数器Counter类,对其重载运算符“+”。二、解题思路:首先编写一个Counter类,然后,进行编写运算符“+”的重载,最后,进行代码的运行编译进行验证。三、代码实现:1#include<iostream>2#include<string>3usingnamespacestd;4classCounter5{......
  • 每日总结2023/4/22
    今天对图形界面做了优化,增加了切换账号,点击选择时间        ......
  • 【CMU15-445 FALL 2022】Project #0 - C++ Primer
    关于参考&鸣谢课程官网CMU15445vscode/clionclang12cmake环境配置C++调试窗口显示“forstringvariable【CMU15-445数据库】bustubProject#0:Trie树实现(C++Primer)2022CMU15-445学习群——152391370前言按照课程要求,本文并不会给出实现代码,可以当做是我遇到问题的总......