实验一:计算机是怎么工作的
来源:互联网 发布:wireshark 数据帧 编辑:程序博客网 时间:2024/04/30 16:04
1. gcc的编译过程
(1)gcc的编译流程包括:
*预处理 (Pre-Processing) : 编译选项 -E , 生成文件后缀 .i
*编译 (Compiling) : 编译选项 -S , 生成文件后缀 .s
*汇编 (Assembling) : 编译选项 -c , 生成文件后缀 .o
*链接 (Linking)
(2)汇编代码分析
c源程序:
int g (int x)
{
return x + 3;
}
int f (int x)
{
return g(x);
}
int main ()
{
return f(8) + 1;
}
对应汇编代码:
g:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp),%eax //通过ebp访问传进来的参数,放入eax
addl $3,%eax //eax加3
popl %ebp //恢复原来的栈框架
ret
f:
pushl %ebp
movl %esp, %ebp
subl $4,%esp //esp下移,预留空间
movl 8(%ebp),%eax //通过栈框架指针ebp,将f的参数放入eax
movl %eax,(%esp) //将eax的值作为调用函数g的参数
call g //调用函数g
leave //函数返回前的准备工作
ret
main:
pushl %ebp //栈框架指针压栈,方便函数返回时,恢复原来的栈框架
movl %esp, %ebp //让ebp指向新的栈框架
subl $4,%esp //栈指针esp下移四个字节,为新的数据预留空
movl $8,(%esp) //给函数f穿参数8,放入刚才预留的空间
callf //函数调用
addl $1, %eax //eax中保存了调用函数f的返回结果,结果加1
leave //函数返回前的准备工作
ret
2. 单任务计算机与多任务计算机的工作方式对比
单任务:内存当中只有一个程序,当这个程序因为请求某些资源而被迫中断时,
cpu进入空闲状态,即使外存中还有其他的程序也不能运行
多任务:内存中有多个程序存在,当当前程序发生中断时,通过调度程序,可以
切换到其他准备好的程序上运行,这样提高了cpu的利用率
- 实验一:计算机是怎么工作的
- 【实验一】计算机是怎么工作的
- 实验一 分析计算机是怎么工作的
- Linux实验:计算机是怎么工作的
- 【实验一】计算机是怎样工作的?
- 计算机是怎么工作的?
- Linux操作系统实验一:计算机是怎样工作的
- 【Linux操作系统分析】实验一:计算机是怎样工作的
- Linux操作系统分析(一)计算机是怎么工作的?
- 实验:计算机是怎样工作的?
- swift计算机是怎么工作的
- 杨洋(161)-计算机是如何工作的(实验一)
- 汇编实验之hello world是怎么工作的
- 实验一 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux操作系统实验一:计算机的工作原理
- 聊聊计算机(一)------存储器是怎么存储数据的?
- Linux内核分析 实验一:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 计算机是如何工作的
- 消息分流器
- 各种数据同步
- CSS3实现超酷的图像动画变换特效
- C++读书笔记之 下标运算符 [] 重载 运算符重载
- Android Studio安装后打不开
- 实验一:计算机是怎么工作的
- 我的研究之路能走多远?--对近日心境变化的总结,写给自己
- 黑龙江局三家外业单位入驻产业园
- 无法删除文件夹的几种解决方法
- 安卓-SingleTask启动模式与Intent的使用
- AfxGetMainWnd返回NULL
- mmap:文件映射进内存及window上的对应方法
- 约瑟夫问题
- 2012年8月 至 2014年2月1日读书列表