notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • csapp

  • MIT 6.S081

    • Introduction and Examples
    • OS Organization and System Calls
    • Page tables
    • Calling conventions and stack frames RISC-V
      • 1. C 到 assembly 的转换
      • 2. RISC-V 和 x86
      • 3. GDB 和汇编代码的执行
    • Trap
    • Page faults
    • Interrupts
    • Multiprocessors and locking
    • Thread switching
    • Sleep & Wake up
  • 计算机系统
  • MIT 6.S081
yubin
2024-01-17
目录

Calling conventions and stack frames RISC-V

这节课主要是熟悉 RISC-V 处理器、汇编语言以及 RISC-V 的 calling convention。

# 1. C 到 assembly 的转换

这里简单看一下 C 语言是如何转换为汇编语言的。

通常来说,C 语言会有一个 main 函数,但处理器并不能理解 C 语言,它只能理解汇编语言(二进制后的汇编代码)。

当我们说到一个 RISC-V 处理器的时候,意味着这个处理器能够理解 RISC-V 的指令集。所以,任何一个处理器都有一个关联的 ISA(Instruction Sets Architecture)。当处理器运行时,看到这些指令编码,就知道该做什么样的操作了。

我们首先写出一个 C 程序,之后这个程序需要经过链接和其他步骤,被编译为汇编语言,之后汇编语言会被翻译成二进制文件(.o 文件或者 .obj 文件)。

这就是计算机能够理解我们 C 代码的基本流程。

# 2. RISC-V 和 x86

x86 属于 CISC(复杂指令集),RISC-V 属于 RISC(Reduced Instruction Set Computer),两者存在一些关键区别:

  • 指令的数量。x86-64 为了向后兼容,大约有 15000 多条指令,相比之下,RISC-V 就小得多了。
  • RISC-V 指令也更加简单。x86-64 中每条指令都执行了一些复杂操作并返回结果,但 RISC-V 的指令趋向于完成更简单的工作,相应的也消耗更少的 CPU 执行时间。
  • RISC-V 是开源的,也是市场上唯一的开源指令集,这意味着任何人都可以为 RISC-V 开发主板。

如果查看RISC-V的文档,可以发现RISC-V的特殊之处在于:它区分了Base Integer Instruction Set和Standard Extension Instruction Set。Base Integer Instruction Set包含了所有的常用指令,比如add,mult。除此之外,处理器还可以选择性的支持Standard Extension Instruction Set。例如,一个处理器可以选择支持Standard Extension for Single-Precision Float-Point。这种模式使得RISC-V更容易支持向后兼容。 每一个RISC-V处理器可以声明支持了哪些扩展指令集,然后编译器可以根据支持的指令集来编译代码。

# 3. GDB 和汇编代码的执行

编辑 (opens new window)
上次更新: 2024/01/29, 08:39:23
Page tables
Trap

← Page tables Trap→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×