b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

李创C语言基础课程(第1章)-3

电脑杂谈  发布时间:2020-07-20 05:21:08  来源:网络整理

c语言 移位运算_c语言移位运算_c语言移位指令

1.3该软件的具体实现

在学习C语言之前,非常有必要了解计算机硬件如何执行软件. 优秀的程序员必须对计算机硬件有深刻的了解.

首先考虑一个问题,什么是软件?实际上,该软件使用最简单的词来形容它是指导计算机执行某些操作. 这类似于当母亲要您散散步时买一瓶酱油. 如果您看到有人在路上卖西瓜,那就买西瓜. . 对于上一段,“母亲”的角色类似于决策者(程序员),而“您”的角色类似于执行官(计算机). 但是“您”与“您的母亲”与“程序员”与“计算机”之间的最大区别在于,“您”与“您的母亲”可以直接交流,而“程序”没有可以在“成员”之间直接交流的语言. 和“计算机”. 计算机知道什么语言?之前我们简短地说过,计算机只能理解二进制机器语言的字符串,而不能理解这26个字母.

假设每个人都有一定的数字电路基础,让我们看一下数字电路模型的框图,如加法器1-3-1的框图所示.

c语言移位指令_c语言移位运算_c语言 移位运算

图1-3-1加法器的框图

在图1-3-1中,需要加的两个加数存储在寄存器A和B中. 这些寄存器直接连接到栅极控制芯片,并提供栅极控制芯片的栅极控制信号由电路控制. 同时,如果要实现加法运算,则还需要加法器的选通信号有效. 一旦这些选通信号满足条件,就可以实现功能,即,将寄存器A和寄存器B的内容相加. 结果发送到寄存器. 这就是该框图要表达的内容. 但是,这与计算机有什么关系?您可能还会分歧地思考c语言移位指令,所谓的计算机难道不是一台执行算术和逻辑运算的机器吗?只是里面有无数的算术加法模块,并且可能有无数的逻辑运算模块用于AND或NOT运算. 大胆考虑一下. 我在上图中描述了加法器选通信号,那么会不会有乘法器选通信号和移位器选通信号?在这种情况下,我们可以扩展此核心组件,如图1-3-2所示.

c语言移位运算_c语言移位指令_c语言 移位运算

图1-3-2中央处理器内部指令集

从图1-3-2中,我们可以看到每个指令实际上对应于CPU的功能. 此功能是CPU中最量化的功能,也就是说,一条指令必须与某个功能相对应. 从图中,让我们再考虑一下. 如果一个CPU有20条指令,那么将有20条信号线来控制它们. 计算机是编码的东西,因此这些指令需要进行编码. 假设计算机有20条指令,那么至少需要5行(2 ^ 5 = 32)才能进行二进制编码,也就是说,假设“ 00000b”表示加法,“ 00001b”移位...类似,上面提到的寄存器实际上有一个固定的地址在CPU内,用于执行特定算术或逻辑运算指令的那些组件称为“算术逻辑单元”或“ ALU”.

以X86体系结构计算机为例. 编译并部署程序(存储在计算机上)后,程序的位置必须是硬盘或非易失性内存(例如Flash). 该内存的读写速度通常很慢. 一旦需要执行程序,计算机将首先将整个程序的执行代码移到内存中. 这时,程序的访问速度提高了一个档次. 以PC为例. 该存储器通常是SDRAM(同步动态随机存取存储器). 它为用户提供的只是一些地址线(不是简单的地址线,这里将不再描述),控制线和数据电缆. 所以问题是,计算机在需要提取指令时如何实现?

说到这一点,我首先要谈一谈冯·诺依曼结构. 这种结构当然是伟大的数学家冯·诺依曼(von Neumann)提出的计算机模型. 它大致包含以下主要内容:

(1)使用存储程序方法,将指令和数据混合并毫无区别地存储在同一存储器中. 数据和程序在存储器中是无法区分的. 它们都是内存中的数据. 当EIP指针指向哪个CPU只需将数据加载到那部分内存中时,指令和数据就可以发送到算术单元进行计算,也就是说,可以修改由指令组成的程序.

c语言移位运算_c语言 移位运算_c语言移位指令

(2)存储器是一维结构,通过地址可以访问线性寻址,并且每个单元中的位数是固定的.

(3)指令由操作码和地址码组成. 操作码指示该指令的操作类型,地址码指示操作数和地址. 操作数本身没有数据类型标志,其数据类型由操作码确定.

(4)通过执行指令直接发送控制信号来控制计算机的操作. 指令根据其执行顺序存储在存储器中,并且指令计数器指示要执行的指令的单元地址. 只有一个指令计数器,通常按顺序递增,但是执行顺序可以根据当时的操作结果或外部条件来更改.

(5)以算术单元为中心,I / O设备与存储器之间的数据传输必须通过算术单元.

(6)数据以二进制表示.

c语言移位运算_c语言 移位运算_c语言移位指令

这里的第一点更为重要,如图1-3-3所示. 假设X86计算机上没有考虑操作系统的完整内存. 运行程序时,计算机将根据代码段,数据段,堆栈段和扩展段的形式随机将其从硬盘中取出. 将其放置在内存中,并将代码段的基地址(起始地址)传递到CPU的CS(代码段寄存器). CPU内部有一个指令指针EIP. 指令指针EIP寄存器在当前代码段中包含一个偏移量. 移位量指向要通过CS: EIP关节执行的下一条指令. 同样,将数据移至内存时,会将其放置在数据段中. 数据段的基地址将传递到CPU的DS(数据段寄存器). 当指令中指定了特定地址时,根据该数据段的基地址和偏移量,将计算该特定物理存储器地址以进行数据存储. 举一个易于理解的例子. 例如,当您住在酒店时,假设您的房间号是3230,并且当前台给您房卡时,您已经同意前两个代表房号,后两个代表房号. ,然后在寻找房间时,必须先寻找32楼,然后在找到楼后找到30号房间,这与计算机中的地址相对应,该楼相当于基址,并且房间号等于偏移量.

关于如何计算基址和偏移量,如果您感兴趣,可以详细学习“微机原理”. 当计算机需要获取指令时,计算机将如何处理?我认为每个人都有这个问题的答案. 实际上,X86CPU内部有一个专门用于地址解码的单元c语言移位指令,称为“总线接口单元”(BIU).

图1-3-3冯·诺依曼结构记忆

以上是冯·诺依曼结构的简要介绍. 同样,还有另一种体系结构,自然可以将程序代码段和数据段完全独立地放置在两个独立的存储器上. 这种架构称为“哈佛”架构,通常在嵌入式处理器上可见.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-286731-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 裴肖雅
        裴肖雅

        真爱国绝不是动不动就喊打喊杀

      • 韩靖辉
        韩靖辉

        想得美台独

      • 李縠
        李縠

        臭美国鬼子压根就没想过要帮伊拉克

      每日福利
      热点图片
      拼命载入中...