C 语言计算机运行模型

操作系统专门在内存里开一个区域来存放代码指令(代码段),每一个函数,都有一个代码段。程序运行时代码段是只读的。
CPU 根据一个指令指针来取当前指令,执行完后,
指令指针移动到下一条指令(顺序执行),或跳转到指定的指令(条件、循环)
要点:
1、每个函数是一个独立的代码片段,在代码段中;
2、有一个指令指针,来决定当前 CPU 执行的指令。

return 语句的两个功能:
1、将指令指针拨回到调用函数的下一条指令;
2、保存返回值到一个特定的地方。

函数运行时的参数和局部变量的内存分配是放在栈上的,操作系统也将内存开一个段出来做运行时栈的使用。
栈有一个栈顶指针,用来表示现在栈上的最后一个元素,
定义一个局部变量或参数,会将栈顶指针往下移动,分配出变量所需要的内存。

注:
操作系统给每个应用程序分配的栈的大小是固定的,如果栈的使用超出了范围,操作系统会结束这个应用程序,抛出栈溢出的错误。

调用函数,分为四个部分:
1、分配参数的内存(函数有多个参数时,从右边的参数往左分配);
2、将参数对应的内存做好数据初始化;
3、将下一条指令的位置保存在栈里;
4、保存栈顶在调用函数之前的位置。

return 指令:
1、回收这个函数里面的局部变量,将栈顶拨回到我们没有调用函数前的地方;
2、保存返回值到一个地方(如 EAX 寄存器等);
3、将指令指针,拨回保存的下一条语句要执行的地方。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值