plc的语句指令中什么表示cpu用什么去做?
PLC中的CPU是不能直接识别PLC指令的,PLC设备是一套完整的计算机系统,除了CPU、RAM、ROM、I/O,还有一个软件系统,包含编程设备上的PLC编程软件,它们把PLC语句编译成CPU可以执行的指令
cpu数据怎么写进去的?
一般来说,读写数据都是相对于cpu的。
当程序加载进内存后,指令放在code段,数据放在data段。data段中数据的地址由段寄存器和该数据偏移组成。code段的地址由cs和ip寄存器组成。
cpu向内存写数据的时,相当于将数据写入内存地址中。数据的地址经过地址总线送给译码器,译码器的有效输出送给锁存单元的使能端,而cpu中寄存器数据通过数据总线送给锁存单元的输入端,实现数据存入内存。
cpu读内存数据时,相当于将内存地址中的数据读入cpu。数据的地址经过地址总线送给译码器,译码器的有效输出送给锁存单元的使能端,此时锁存单元将输出端数据送入数据总线,再通过数据总线送入cpu。
cpu与内存通过数据总线交换数据,数据总线是双向的。
求解:Cpu执行的指令来自内存,那内存中的指令来自哪里?如何产生?
程序执行的过程:
1、写好一个程序,经过编译、链接后会生成一个可执行文件,在linux平台下是ELF(Executable Linkable Format)格式的,windows平台下是PE(Portable Executable)格式的。
2、然后你执行这个可执行文件,这个可执行文件里面的代码段、数据段和BSS段会被加载到PC或者某设备的内存中。代码段里放的就是指令,所以内存里的指令是通过执行某可执行文件加载到内存里的。
3、CPU会从代码段的起始地址,调用第一条指令,开始执行。如果没有遇到跳转指令就顺序执行:假设代码段起始地址是0x100,那么就是先执行0x100这个地址里的指令,然后再执行0x104、0x108地址里的指令。如果遇到跳转指令,就跳转到相应地址,取指令,继续执行。如此往复,完成了整个程序的运行。
4、有些指令,比如add rD,rA,rB。需要去rA和rB寄存器里取值。rA和rB寄存器里的值来自哪里?来自内存里的数据段、BSS段或者栈里或者堆里。说白了,程序就是靠执行一条条执行运行起来的,而指令执行所需的数据放在数据段、BSS段、栈或者堆里。
5、数据加载到数据寄存器的过程:CPU先去数据cache里找这个数据,如果找到了就直接从数据cache加载到数据寄存器里,如果找不到的话就只能再去内存里找。然后就是cache把刚才找到的这个数据缓存起来。
6、另外,CPU读数据的时候,cache的工作很简单,就是缓存。如果是写数据的话,cache就分为write though和wirte back两种不同的工作方式了。此外,CPU发出的地址都是逻辑地址,必须经过MMU模块把逻辑地址转换为物理地址才能正确访问内存。
7、注意,CPU执行指令的时候,也是从指令寄存器里取指令的,并不是直接跑到内存里去取指令,因为这样太慢了。指令加载到指令寄存器的过程和加载数据是类似的。
到此,以上就是小编对于的问题就介绍到这了,希望介绍的3点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。