概述
MIT EDU 6.828 实验源代码
分类 MIT6.828 32位操作系统实验笔记
实验完善代码 LAB2-4下载链接 提取码:79t8
1、AT&T 汇编语言的相关知识
在Linux源代码中,以.S(或.s)为扩展名的文件是包含汇编语言代码的文件。
- GNU汇编程序GAS(GNU Assembly)和连接程序
一个编辑好的程序需要对其进行汇编和连接。在Linux下有两种方式,一种是使用汇编程序GAS 和连接程序LD;另一种是使用GCC。
(1)使用汇编程序GAS 和连接程序LD
//将汇编语言源文件转换为目标文件 .s -> .o
as sourcecode.s -o obj.o
//连接为可执行文件 .o -> .exe
ld obj.o -o execode
(2)使用GCC
gcc -o execode sourcecode.S
注意这里必须用.S ,大写的S ,因为大写的S 可以使GCC 自动识别汇编程序中的C预处理命令,像#include #define 等。
小写的s 不进行预处理。
- AT&T 中的节
在AT&T 的语法中,一个节由.section关键字来标识。
(1).data
这个节包含程序初始化的数据。
(2).bss
这个节包含程序未初始化的数据,也就是未赋初始的变量,当操作系统装入这个程序时,将这个段的变量都置为0。
使用.bss 比使用 .data 的优势在于, .bss 节在编译后不占磁盘空间, 这样生成的代码的尺寸比较小。
编译程序往往把.data 和 .bss 放在4字节上对齐。
(3).text
这个节包含程序的代码,这个节 只读。
-
汇编程序指令
(1).fill repeat,size,value
反复拷贝size 个字节,重复 repeat 次。size 和 value未可选值,默认值分别为 1 和 0。
(2).rept .endr
语法: .rept count
…
.endr
将.rept 和 .endr 间的指令重复执行count 次。 -
GCC内嵌汇编
Linux 操作系统内核代码绝大多数采用C语言编写,只有一小部分使用汇编语言编写。例如与特定结构体系相关的代码和对性能影响较大的代码。GCC提供了内嵌汇编的功能,可以直接在C语言中嵌入汇编语言语句,大大方便了程序设计。
本文参考文章 http://grid.hust.edu.cn/zyshao/OSEngineering.htm
推荐这位博主系列的文章
最后
以上就是甜蜜犀牛为你收集整理的MIT6.828 32位操作系统笔记(2)----AT&T汇编语言与GCC内嵌汇编的全部内容,希望文章能够帮你解决MIT6.828 32位操作系统笔记(2)----AT&T汇编语言与GCC内嵌汇编所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复