C 语言计算机运行模型

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

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

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 计算机网络方面的选择题及答案: 1) 在OSI七层模型中,哪一层负责物理传输? A. 应用层 B. 传输层 C. 网络层 D. 物理层 答案:D 2) 在TCP/IP协议中,哪一层负责将数据进行分组和封装? A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 答案:C 3) 下列哪种协议是面向连接的? A. TCP B. UDP C. HTTP D. FTP 答案:A 4) 在计算机网络中,什么是DNS? A. 一种网络拓扑结构 B. 一种网络传输协议 C. 一种网络安全协议 D. 一种域名解析系统 答案:D 2. 数据库方面的选择题及答案: 1) 在关系型数据库中,关系是什么? A. 表 B. 行 C. 列 D. 数据库 答案:A 2) 下列哪个是数据库的一种范式? A. 2NF B. 3FF C. 4NF D. 5NF 答案:A 3) 在SQL中,哪个命令用于查询数据? A. UPDATE B. DELETE C. SELECT D. INSERT 答案:C 4) 下列哪个关键字用于在SQL中创建表? A. CREATE B. ALTER C. DROP D. TRUNCATE 答案:A 3. 操作系统方面的选择题及答案: 1) 在操作系统中,进程是什么? A. 一段存储在磁盘上的程序 B. 一个正在运行的程序实例 C. 一个线程 D. 一个系统资源 答案:B 2) 下列哪种调度算法是非抢占式的? A. FCFS B. SJF C. RR D. 哈希调度 答案:A 3) 在Linux中,哪个命令用于查看当前目录下的文件列表? A. ls B. cd C. pwd D. mkdir 答案:A 4) Windows操作系统中,哪个命令用于关闭计算机? A. shutdown B. reboot C. logoff D. exit 答案:A 4. 编程语言方面的选择题及答案: 1) 下列哪个是面向对象编程语言? A. C B. Python C. Assembly D. COBOL 答案:B 2) 在Python中,哪个函数用于输出文本到控制台? A. print B. input C. open D. close 答案:A 3) 在Java中,哪个关键字用于创建类的实例? A. new B. class C. void D. public 答案:A 4) 在C++中,哪个关键字用于定义类的成员函数? A. class B. public C. private D. function 答案:D

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值