CMU 15-213 Introduction to Computer Systems学习笔记(6) Machine-Level Programming-Procedures
Mechanisms in Procedures
Stack Structure
stack只是内存中某个具体的地址,主要功能是用来帮助一些函数的调用,要注意的是图上stack pointer指向最下,每加入一个数据指针向下方向地址是递减的。
stack push&pop
注意的是stack pop指令我们没有对内存中的数据进行改动,而是移动了pointer指针!
Passing control
程序例子
上图中%rip寄存器存储了当前指令的地址。
Passing Data
这段代码看起来是很messy,由于没有太多解释 确实很messy,听课的时候到这里我已经有点蒙圈。
Stack Frame
可以理解为在一个函数中调用另一个函数,在这个过程中有不断的调用新的函数,会创建一个stack frame。
例子
Register Saving Conventions
如果我们想要某个在调用者caller中的值 被调用者callee返回不变的时候,我们应该假设寄存器中的值会被覆盖
caller需要临时存储数据 callee需要先放在stack中 然后函数结束的时候返回(这种方法可能会有点不太直观,需要长期练习熟悉)
x86-64 Linux Register Usage #1
这里常用的就是%rax用作返回值,%rdi-%r9用作函数的参数。
Rucrsion
Recursive Function Terminal Case
寄存器保存约定防止相互的函数摧毁数据
CMU 15-213 Introduction to Computer Systems学习笔记(6) Machine-Level Programming-Procedures相关推荐
- Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型
本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容. 将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图: 数据传输时,突发大量的数据包会增加延迟,简单周 ...
- 【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)
[机器学习笔记]可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning) 目录 [机器学习笔记]可解释机器学习-学习笔记 Interpre ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 13:Introduction to Auctions(拍卖简介)
Lecture 13 Introduction to Auctions(拍卖简介) 1 Preamble(前言) 为什么计算机科学家要关心拍卖?直到最近(甚至可能仍然),提到拍卖,我们脑海中联想到的图 ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 15 The VCG Mechanism(VCG机制)
Lecture 15 The VCG Mechanism(VCG机制) 1 GSP vs VCG 作为本讲的开始,我们来证明上一讲中的一个重要结论: 回忆一下背景:有k个广告位,它们 的点击率排布为) ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统
Lecture 12 Asymmetric Information and Reputation Systems(对称信息和声誉系统) 1 Preamble(前言) 之前的几讲,我们都在声誉系统的边缘 ...
- Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
9.5 Predicting Movie Ratings 9.5.1 Problem Formulation 推荐系统. 推荐系统的问题表述:电影推荐.根据用户对已看过电影的打分来推测用户对其未打分的 ...
- CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)
Lecture 17 Scoring Rules and Peer Prediction(Incentivizing Honest Forecasts and Feedback)(评分规则和同辈预测( ...
- POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems 学习笔记
1. 引言 Grassi等人2019年论文<POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems>. 前序博客有: ...
- 概率导论(Introduction to Probability, 2E)学习笔记 Part Ⅰ
笔记内容基于Introduction to Probablity, Second Edition 因笔者为初学者,故内容不会面面俱到 若有表述错误还望直接指出 --2022.1 样本空间与概率 本书的 ...
- Introduction to Materials Management 学习笔记--生产计划系统
概述本章介绍了MPC(Manufacturing planning and control)系统.首先从总体上介绍一下,然后讲了生产计划的编制的一些细节(英文就是省事加个ing就能说明很多问题,本章在 ...
最新文章
- HDU4080 Stammering Aliens(二分 + 后缀数组)
- linux pycharm 数字键盘失效
- 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
- linux系统遵循以下哪项协议,实务(互联网技术)通信工程师考试习题库
- Nginx 附录C 模块编译,调试与测试
- ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案
- 高精度事件计时器怎么关闭_Node.js 事件循环
- /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...
- 使用IStream和GDI+在内存中实现图像格式转换
- 计算机仿真matlab编程,MATLAB与计算机仿真
- Linux忘记密码修改密码
- python面向对象练习题_Python面向对象练习-乌龟吃鱼
- java-net-php-python-jspm毕业就业管理系统演示录像2019计算机毕业设计程序
- coldfusion_ColdFusion组件-简介
- java chmod 777_尽管使用chmod 777,但java.io.FileNotFoundException(权限被拒绝)
- 什么是RESTful风格的API
- grep -q 大小比较
- 活动推荐丨当云计算遇到边缘计算
- 微信公众号 - Java推送公众号模板消息给用户
- Azure Synapse Analytics (Azure SQL DW)性能优化指南(4)——使用结果集缓存优化性能