我是靠谱客的博主 甜蜜犀牛,最近开发中收集的这篇文章主要介绍MIT6.828 32位操作系统笔记(2)----AT&T汇编语言与GCC内嵌汇编,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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内嵌汇编所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部