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相关推荐

  1. Introduction to Computer Networking学习笔记(十五):Queue Model 包交换中的缓冲模型

    本章知识点比较零散,因此一篇文章进行总结,并且不具有连贯性,仅记录自己认为有价值的内容. 将较大的包拆分为小包进行传输,可以减小端对端延迟,原因如下图: 数据传输时,突发大量的数据包会增加延迟,简单周 ...

  2. 【机器学习笔记】可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning)

    [机器学习笔记]可解释机器学习-学习笔记 Interpretable Machine Learning (Deep Learning) 目录 [机器学习笔记]可解释机器学习-学习笔记 Interpre ...

  3. CS269I:Incentives in Computer Science 学习笔记 Lecture 13:Introduction to Auctions(拍卖简介)

    Lecture 13 Introduction to Auctions(拍卖简介) 1 Preamble(前言) 为什么计算机科学家要关心拍卖?直到最近(甚至可能仍然),提到拍卖,我们脑海中联想到的图 ...

  4. CS269I:Incentives in Computer Science 学习笔记 Lecture 15 The VCG Mechanism(VCG机制)

    Lecture 15 The VCG Mechanism(VCG机制) 1 GSP vs VCG 作为本讲的开始,我们来证明上一讲中的一个重要结论: 回忆一下背景:有k个广告位,它们 的点击率排布为) ...

  5. CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统

    Lecture 12 Asymmetric Information and Reputation Systems(对称信息和声誉系统) 1 Preamble(前言) 之前的几讲,我们都在声誉系统的边缘 ...

  6. Coursera 机器学习 第9章(下) Recommender Systems 学习笔记

    9.5 Predicting Movie Ratings 9.5.1 Problem Formulation 推荐系统. 推荐系统的问题表述:电影推荐.根据用户对已看过电影的打分来推测用户对其未打分的 ...

  7. CS269I:Incentives in Computer Science 学习笔记 Lecture 17 评分规则和同辈预测(诚实预报和反馈激励)

    Lecture 17 Scoring Rules and Peer Prediction(Incentivizing Honest Forecasts and Feedback)(评分规则和同辈预测( ...

  8. POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems 学习笔记

    1. 引言 Grassi等人2019年论文<POSEIDON: A New Hash Function for Zero-Knowledge Proof Systems>. 前序博客有: ...

  9. 概率导论(Introduction to Probability, 2E)学习笔记 Part Ⅰ

    笔记内容基于Introduction to Probablity, Second Edition 因笔者为初学者,故内容不会面面俱到 若有表述错误还望直接指出 --2022.1 样本空间与概率 本书的 ...

  10. Introduction to Materials Management 学习笔记--生产计划系统

    概述本章介绍了MPC(Manufacturing planning and control)系统.首先从总体上介绍一下,然后讲了生产计划的编制的一些细节(英文就是省事加个ing就能说明很多问题,本章在 ...

最新文章

  1. HDU4080 Stammering Aliens(二分 + 后缀数组)
  2. linux pycharm 数字键盘失效
  3. 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
  4. linux系统遵循以下哪项协议,实务(互联网技术)通信工程师考试习题库
  5. Nginx 附录C 模块编译,调试与测试
  6. ArcGIS Server Java 9.3 REST API的中文查询问题的解决方案
  7. 高精度事件计时器怎么关闭_Node.js 事件循环
  8. /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...
  9. 使用IStream和GDI+在内存中实现图像格式转换
  10. 计算机仿真matlab编程,MATLAB与计算机仿真
  11. Linux忘记密码修改密码
  12. python面向对象练习题_Python面向对象练习-乌龟吃鱼
  13. java-net-php-python-jspm毕业就业管理系统演示录像2019计算机毕业设计程序
  14. coldfusion_ColdFusion组件-简介
  15. java chmod 777_尽管使用chmod 777,但java.io.FileNotFoundException(权限被拒绝)
  16. 什么是RESTful风格的API
  17. grep -q 大小比较
  18. 活动推荐丨当云计算遇到边缘计算
  19. 微信公众号 - Java推送公众号模板消息给用户
  20. Azure Synapse Analytics (Azure SQL DW)性能优化指南(4)——使用结果集缓存优化性能

热门文章

  1. [Delphi]用程序更改 IE 的代理服务器(Proxy)设置及本地连接
  2. arm 环境下安装selenium+chrome
  3. Spring Boot学习记之Maven
  4. css3 水纹效果(仿写阿里云)
  5. 使用src.rpm包安装软件
  6. 智慧≥智能+应用 2016智能交通展的科达不等式
  7. WannaCry不相信眼泪 它需要你的安全防御与响应能力
  8. 使用Varnish为web网站加速
  9. ASP.NET MVC 2 正式发布
  10. Linux下部署Java,Tomcat环境