前言
最近在学习清华大学操作系统课程,同时在实验楼做实验,打算把实验过程记录下来。算上环境搭建的实验共九个,也就是说这系列共有9篇文章。
贴几张图片:
1、了解汇编
运行 gcc -S -m32 lab0_ex1.c
,生成S汇编语言文件。
- -S表示仅仅编译,不进行链接或汇编
- -m32表示生成32位机器的汇编代码
得到lab_ex1.S文件,下面对比理解C文件和S文件(不会):
int count=1;
int value=1;
int buf[10];//三个变量
void main()
{
asm(
"cld \n\t"//将标志寄存器Flag的方向标志位DF清零。
"rep \n\t"//重复前缀指令
"stosl"//将EAX中的值保存到ES:EDI指向的地址中
:
: "c" (count), "a" (value) , "D" (buf[0])
:
);
}
.file "lab0_ex1.c"
.globl count
.data
.align 4
.type count, @object
.size count, 4
count:
.long 1
.globl value
.align 4
.type value, @object
.size value, 4
value:
.long 1
.comm buf,40,32
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
pushl %edi
pushl %ebx
.cfi_offset 7, -12
.cfi_offset