第五周作业
课堂测验
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
这世界真美,即使你不在我身边,我也想去看看这个世界。 ——苏更生
(我并不认识这个人)