0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编程语言的加载和执行过程

CHANBAEK 来源: 数壳智学 作者: 赤灵 2023-10-31 10:13 次阅读

上一章着重讲了指令,我们用汇编C语言等工具编写的代码最终也被转化成机器指令被执行。本章进一步阐述编程语言如何被加载和执行的过程。

6.1.一段程序代码

我们给出一段类似C语言的代码,作为本书电路的“hello world”程序,看看电路之间如何配合才能完成执行这个代码的目标。

试着分析这3行代码:

1、a=6,a在高级语言中是一个变量,其本质是一个内存地址;a=6的意思是在a地址的内存空间中存入数字6;本章为了讲解过程进一步简化,假设这两句已经执行完毕。

2、c=a+b,首先把a和b的内存空间中的数字,用加法器加起来,得到一个结果值9,然后把9存储到c这个地址的内存空间中。

图片

图 6-1 本章代码内存示意图

指令操作码指令地址说明
0000 00000000 1100读取被加数a的值到加法站暂存器
0000 00010000 1010从内存读取加数,并相加
0000 00100000 1101将相加的结果存储内存

6.2.程序执行控制

从上一章详细阐述了指令寄存器从内存中取出代码指令,然后控制指令的执行。但是他只负责具体执行一条指令,给它什么指令,它就去完成,可见背后还应该有一个“指挥棒”,把需要执行的指令给指令寄存器,等他执行完成后,把下一个指令给它。

需要设计一个程序执行控制模块,来做这个“指挥棒”,我们来试着分析它如何工作。

如图 6-1,内存被分成代码区和数据区两部分,代码区从内存的0000 0000位置开始。根据我们的电路设计,指令的格式是8位的操作码加上8位的操作地址(见图 5-1),我们的内存被设计成8位的存储单元,每一个内存地址下可以存放一个8位的数据。所以一个完整指令在内存中被分两行存储。

图片

图 6-2 计数寄存器对指令寄存器的控制示意图

图 6-2所示,指令寄存器通过对其他的寄存器的控制来执行指令,程序运行控制模块则通过控制指令寄存器的运行,达到控制整个电路运行的效果。首先,电路通电后,“程序运行控制逻辑模块”中PC寄存器放着内存中存放代码的首地址(图 6-1的0000 0000地址),然后反复执行如下步骤:

1.控制指令操作寄存器(IR_OP)把第一个指令的操作码取出(内存设置可读,IR_OP设置可写);

2.PC寄存器地址加1;

3.控制指令地址寄存器(IR_ADDR)把第一个指令的操作地址取出(内存设置可读,IR_ADDR设置可写);

4.指令地址寄存器(IR_ADDR)设置为可读,设定好指令操作过程中的内存地址;

5.指令操作寄存器(IR_OP)设置为可读,按照指令码运行相应的指令逻辑;

6.PC寄存器地址加1;

每完成一次6个步骤的循环,则完成内存中的一个指令的执行,并准备进入下一个指令的执行。

6.3.指令执行控制译码器设计

为了实现反复执行以上6步,电路设计的大概思路是用一个三进八出的译码器,输出端对应这6个步骤,输入端循环输入二进制的0~5。

6.4.PC寄存器内存地址加1电路设计

6.5.小节

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120260
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136713
  • 编程语言
    +关注

    关注

    10

    文章

    1942

    浏览量

    34714
  • 程序代码
    +关注

    关注

    4

    文章

    42

    浏览量

    15433
收藏 人收藏

    评论

    相关推荐

    C语言编译过程

    C语言从源代码到可执行文件的过程
    的头像 发表于 02-04 11:58 2081次阅读

    加载机制的过程和策略

    的生命周期为:加载,连接,初始化,使用,卸载。不过这里只重点描述加载,连接,初始化这三个过程。  二、加载过程  基于一张图看类
    发表于 01-05 17:21

    CPU的代码语言执行以及编程语言的变化过程是怎样的

    CPU的基本架构是怎样组成的?其过程是怎样的?CPU的代码语言执行以及编程语言的变化过程是怎样的
    发表于 11-04 07:13

    c语言指令执行过程是怎样的

    [STM32]STM32F407系列教程之三,c语言知识点巩固 指令执行过程
    发表于 12-09 06:31

    arduino用什么语言编程

    Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言,C语言是一种面向过程编程
    发表于 11-08 15:21 7w次阅读

    加载flash并执行(LFAE)次级bootloader的示例

    这篇应用笔记描述了一个加载flash并执行(LFAE)次级bootloader的示例。这个应用是开发来增强AN2546中给出的加载RAM并执行主bootloader的,其中加入了允许随
    发表于 11-24 13:53 3189次阅读

    java程序的执行过程详解

    Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将编译好的字节码文件加载到内存(这个过程被称为类加载,是由
    发表于 04-26 11:12 1.8w次阅读
    java程序的<b class='flag-5'>执行</b><b class='flag-5'>过程</b>详解

    GRAPH编程语言

    GRAPH 是一种创建顺序控制系统的图形编程语言。使用顺控程序,可以更为快速便捷和直观地对顺序进行编程。通过将过程分解为多个步,而且每个步都有明确的功能范围,然后再将这些步并组织到顺控
    的头像 发表于 04-09 15:06 1.4w次阅读
    GRAPH<b class='flag-5'>编程</b><b class='flag-5'>语言</b>

    PLC梯形图编程方法和编程语言的特点

      梯形图编程是一个广泛应用于PLC编程编程语言,它有一个与电子电路图非常相似的框架,但是它的目标是编写和执行自动化
    发表于 03-16 18:02 3252次阅读

    plc编程是什么 plc编程语言

    PLC编程是指通过PLC编程软件,使用PLC编程语言(如Ladder Diagram、Function Block Diagram、Structured Text等)对PLC进行程序设
    发表于 04-14 15:44 6958次阅读

    CAPL编程语言快速入门

    CAPL是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程
    的头像 发表于 09-17 16:11 2717次阅读
    CAPL<b class='flag-5'>编程</b><b class='flag-5'>语言</b>快速入门

    简单聊聊C语言执行步骤

    我们初学C语言时老师肯定讲过C语言执行过程:预处理——编译——汇编——链接。
    发表于 07-31 11:28 1201次阅读
    简单聊聊C<b class='flag-5'>语言</b>的<b class='flag-5'>执行</b>步骤

    uboot命令的执行过程是什么

    U-boot是通过执行u-boot提供的命令来加载Linux内核的,其中 命令bootm的功能 即为从memory启动Linux内核映像文件。 在讲解bootm加载内核之前,先来看看u-boot中
    的头像 发表于 12-04 17:31 802次阅读

    浅谈PLC程序执行过程

    plc初学者,学习编程,首先要了解PLC程序执行过程是什么。
    的头像 发表于 01-08 09:31 2741次阅读

    MCU编程语言和开发环境介绍

    MCU编程语言 MCU编程语言是用于编写MCU程序的高级编程语言,它们使得开发者能够更高效地开
    的头像 发表于 11-01 11:51 676次阅读