第五周学习笔记


第五周作业

课堂测验

1、在gcc -S -o main.s week040120189208时报语法错误
发现复制粘贴的代码“;”需要改成英文
2、gcc -g week0402.c week0402 -m32始终报错缺少文件
重新安装sudo apt-get install gcc-multilib 就好了

实验楼实验

1、在嵌入汇编时我发现ebx好像并没有用到,但还是首先使ebx为0。书上说是系统调用传递第一个参数,但还是不太理解为什么非得使ebx为0。
2、选择了24、47号进程实验过程:
C语言实现调用非常简单,time.c代码如下:

time.c汇编代码如下:

time.c实现相同功能的API和C代码嵌入汇编time9208.c如下:

#include <stdio.h>
int main()
{
int uid,gid;
asm volatile(
        "mov $0,%%ebx
	"
        "mov $0x18,%%eax
	"
        "int $0x80
	"
        "mov %%eax,%0
	"
        :"=m"(uid)
        );
asm volatile(
        "mov $0,%%ebx
	"
        "mov $0x2f,%%eax
	"
        "int $0x80
	"
        "mov %%eax,%0
	"
        :"=m"(gid)
        );
printf("uid=%d,gid=%d
",uid,gid);
return 0;
}

运行成功。

next

这世界真美,即使你不在我身边,我也想去看看这个世界。 ——苏更生(我并不认识这个人)


原文地址:https://www.cnblogs.com/Ychancy/p/9928460.html