1
1
mirror of https://github.com/foxsen/archbase.git synced 2026-02-10 05:35:40 +08:00

删除多余的“浮点”两字

感谢@bjrjk指正

Resolved #11
This commit is contained in:
Zhang Fuxin
2021-11-04 08:19:44 +08:00
parent 83b41b4ed5
commit 7b4bd106f1
2 changed files with 4 additions and 1 deletions

View File

@@ -356,6 +356,9 @@ valign(i = NULL, j = NULL, valign = "top", part = "body") %>%
theme_box()
```
5LoongArch部分指令特色。LoongArch作为一个全新的指令系统在指令取舍和应用程序二进制程序接口设计等方面充分借鉴了现代指令系统研究的经验一方面
## C语言的机器表示
C语言等高级语言编写的程序必须经过编译器转换为汇编语言再由汇编器转换为指令码才能在CPU上执行。本节简要介绍高级语言转换为指令码涉及的一些问题为方便起见选择C语言和LoongArch汇编码进行介绍。

View File

@@ -208,7 +208,7 @@ knitr::include_graphics("materials/chapter4/simple.S.png")
knitr::include_graphics("materials/chapter4/simple_nofp.S.png")
```
大部分函数可以只用\$sp来管理栈帧。如果在编译时能够确定函数的栈帧大小编译器可以在函数头分配所需的栈空间通过调整\$sp,这样在函数栈帧里的内容都有一个编译时确定的相对于$sp的偏移也就不需要帧指针\$fp了。例如图\@ref(fig:normal-c)中的normal函数用gcc -O2 -S编译的结果如图\@ref(fig:normal-as)所示。normal函数调用了一个有9个整数参数的外部函数这样它必须有栈帧来为调用的子函数准备参数。可以看到编译器生成了一个32字节的栈帧把最后一个浮点参数9保存到偏移0把返回地址\$ra保存到偏移24。
大部分函数可以只用\$sp来管理栈帧。如果在编译时能够确定函数的栈帧大小编译器可以在函数头分配所需的栈空间通过调整\$sp,这样在函数栈帧里的内容都有一个编译时确定的相对于$sp的偏移也就不需要帧指针\$fp了。例如图\@ref(fig:normal-c)中的normal函数用gcc -O2 -S编译的结果如图\@ref(fig:normal-as)所示。normal函数调用了一个有9个整数参数的外部函数这样它必须有栈帧来为调用的子函数准备参数。可以看到编译器生成了一个32字节的栈帧把最后一个参数9保存到偏移0把返回地址\$ra保存到偏移24。
```{r normal-c, echo=FALSE, fig.align='center', fig.cap="normal函数代码", out.width='100%'}
knitr::include_graphics("materials/chapter4/normal.c.png")