CPU中的程序是怎么运行起来的(预告篇)
总述
最近一位朋友问我,我开发的代码是怎么运行起来的,我就开始给他介绍代码的预编译、汇编、编译、链接然后到一般的文件属性,再到代码运行。但是大佬问了我一句,CPU到底是怎么执行到每一个逻辑的,就讲了哈CPU的架构。这是时候真的有些迷了,虽然有模电数电的底子,但是自己都说迷糊了,汇编怎么对应到机器码再到怎么执行每一个逻辑。
所以我想了想,我可以写一篇文章,从我嵌入式开发的工作中去描述一下CPU的代码执行的过程。虽然网上也有很多人讲这个过程,我也想用自己的视角去介绍一下。所以我就花了三天时间把《CODE》这本书啃完,然后准备写篇文章。不过今天由于时间问题,我就不写了,明天我写具体看书以及自己的经验去描述CPU的代码运行情况。
作者:良知犹存
转载授权以及围观:欢迎添加微信公众号:Conscience_Remains
下面是准备介绍的大纲:
CPU的基本的硬件组成结构由简单到复杂
CPU集成的架构演变以及分别对应的职能
CPU代码语言的发展过程以及汇编到机器码的具体执行
!!!今天时间关系无法写出全文,先简单介绍一哈文章状态,以及推荐大家一个汇编执行小游戏。
这是这几天配合看的基本书,有兴趣的朋友可以找我分享给你哈。
今天没有写具体细节,但是想先给大家推荐一个这几天玩的一个小游戏,程序员升职记,里面的运行逻辑其实很接近汇编指令在CPU的运行情况,还是很好玩的。配合上文章简直稳的一匹。
先来介绍一哈游戏:程序员升职记(Human Resource Machine)
游戏里面是模拟一个程序员从入职到工作四十五年的开发过程。每一个环节有不同的挑战,下面就是我差不多20关的时候,遇到的一个问题,我自己写时间复杂度和空间复杂度上都没有满足要求。
不过还好我有攻略,经过攻略的调整我的代码好多了,哈哈哈哈。最后面附上攻略来源。
攻略:https://cowlevel.net/article/2045657
对滴,游戏攻略奉上,每一关都有介绍,这位做攻略的大哥有心了。
最后就这样哈,大家要玩有些的朋友可以关注我后台回复我 程序员升职记 我把我的下载链接分享给你哈,大家一起玩起来,寓教于乐。
更多分享,扫码关注我
CPU中的程序是怎么运行起来的(预告篇)的更多相关文章
- CPU中的程序是怎么运行起来的
总述 最近一位朋友问我,开发的代码是怎么在芯片运行起来的,我就开始给他介绍代码的预编译.汇编.编译.链接然后到一般的文件属性,再到代码运行.但是大佬问了我一句,CPU到底是怎么执行到每一个逻辑的,就讲 ...
- C#中防止程序多次运行
C#中如何防止程序多次运行?只要在程序入口点函数Main()中的开始部分添加如注释部分的代码,就能快捷实现. 示例代码如下: using System; using System.Collecti ...
- linux nohup命令实现退出终端后程序继续后台运行
Unix/Linux下一般想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行:但如果要想在退出终端后,程序依然还在后台运行,则要用nohup与&组合来实现. nohup ...
- linux nohup命令使程序在后台运行的方法
在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了. Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行. 比如要运行 ...
- 在linux下,怎么去查看一个运行中的程序, 到底是占用了多少内存
1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...
- 在linux下,查看一个运行中的程序, 占用了多少内存
1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物 ...
- VS2010中设置程序以管理员身份运行
VS2010中设置程序以管理员身份运行 直接项目右键---属性---连接器---清单文件---uac执行级别 选择requireAdministrator 重新编译 即可 这样程序直接运行就拥有管理员 ...
- 在windows中:双击运行Python程序、后台运行Python程序
在windows中:双击运行Python程序.后台运行Python程序 安装Python解释器的windows环境,如果双击运行*.py的文件,会闪退.怎样避免闪退呢? 我们用python的日志输出程 ...
- linux下,一个运行中的程序,究竟占用了多少内存
linux下,一个运行中的程序,究竟占用了多少内存 1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用 ...
随机推荐
- 腾讯IOT之树莓派物联网设备
目录 腾讯IOT之树莓派物联网设备 硬件配置 软件配置 Tecent IOT 开发平台的使用 新建项目 新建产品 添加自定义功能 设备开发 微信小程序配置 面板配置 新建设备 使用设备 在线调试 设备 ...
- Github美化 添加徽章
Github美化 添加徽章 0. 前言 1. 准备 2. 开始 a. 打开shields.io b.制作静态徽章 c.制作动态徽章 d. 结果 3.额外 0. 前言 之前看见很多大项目都有很多勋章,比 ...
- 关于.NET中的控制反转(三)- 依赖注入之 Autofac
一.Autofac简介 Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.Autofac的主要特性如下: 组件侵入性为零 ...
- 快速了解JavaScript的基础知识
注释 单行注释: // 单行注释 多行注释: /* 多行 注释 */ 历史上 JavaScript 可以兼容 HTML 注释,因此 <!-- 和 --> 也可以是单行注释. x = 1; ...
- epoll的陷阱实践
在使用epoll的时候,我们上篇文章epoll的陷阱大体介绍了epoll中会有哪些问题.这篇文章我们就针对必须要了解,也是绕不过去的陷阱进行实验,看看现象是什么,并且如何编写才能达到我们想要的效果. ...
- xtrabackup_binlog_info
文件保存了备份结束时刻binlog的名称和位置
- XSS - Pikachu
概述: Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS.一般XSS可以分为如下几种常见类型 ...
- ctfshow—web—web7
打开靶机 发现是SQL注入,盲注 过滤了空格符,可以用/**/绕过,抓包 直接上脚本 import requestss=requests.session()url='https://46a0f98e- ...
- 通过logmnr找到被修改前的存储过程
1.找到存储过程被修改时的归档日志 SELECT NAME FROM V$ARCHIVED_LOG WHERE FIRST_TIME BETWEEN TO_DATE('20191118080000', ...
- nodejs中使用worker_threads来创建新的线程
目录 简介 worker_threads isMainThread MessageChannel parentPort和MessagePort markAsUntransferable SHARE_E ...