CPU怎么认识代码的?

# 语言这个东西?

首先说明下,我们正常使用的python、C++、C语言等等,我们自己能读得懂的语言,包括汇编语言,CPU都是不认识的,CPU 只认识一种语言,那就是 机器语言,也就是我们很多人,或者很多老师,或者很多老鸟,很多大佬都提到的 机器码

#机器码是什么?

机器码是CPU可以认识的,可以按照这个机器码去执行相对应指令的代码,我们可以认识它就是一些 十六进制 字符。

比如下面这些,就是机器码

:200000007592007591007590FFC294C295C29612001ED294D295D29612001E0200097DC8E5
:0B0020007EC87FF8DFFEDEFADDF6226E
:00000001FF

# CPU上电执行程序过程

RAM 和 ROM 是永远躲不开的话题,我们编译成的机器码最后会烧录到一个ROM的位置,这个位置保存的东西掉电可保存,这个是基本操作。

然后开机的第一件事,就是把ROM里面的程式,程式是很多台湾的工程师这样说明的,我们叫程序,不管叫什么,都是一堆二进制代码,把这些代码拷贝到RAM里面,然后CPU就从RAM的指定位置去开始执行程序。

很经典

#什么是汇编代码?

汇编代码和机器码是有对应关系的,所以我们很多时候分析一个C语言代码的流程,特别是那种未定义行为的时候,我们都反编译成汇编来看,汇编代码就代表了CPU的执行顺序,CPU就是按照汇编代码来执行对应的指令的。

如下是51单片机的一段汇编代码

;流水灯程序P1M0 DATA 092H
P1M1 DATA 091H
ORG 00H
MOV P1M0,#00000000B
MOV P1M1,#00000000B
MOV P1,#11111111BSTART:CLR P1.4        ; 置0,CLR P1.5        ; 置0,CLR P1.6        ; 置0,LCALL DELAY     ; 延时0.2sSETB P1.4       ; 置1,点亮LEDSETB P1.5       ; 置1,点亮LEDSETB P1.6       ; 置1,点亮LEDLCALL DELAY     ; 延时0.2sLJMP START      ; 进行重新循环
DELAY:MOV R5,#200      ; 执行MOV指令为1个机器周期
D1:MOV R6, #200     ; 执行的时间为:1*20 个机器周期
D2:MOV R7, #248    ; 该条指令执行了: 1*20*20DJNZ R7,$       ; 该条指令执行了: 2*20*20*248DJNZ R6, D2     ; 该条指令执行了: 2*20*20 个机器周期DJNZ R5, D1     ; 该条指令执行了: 2*20RET             ; 该条指令执行了: 2END

#机器代码和汇编代码的对应关系

每个CPU都有指令集,这个对应关系也就是指令集的对应关系,例如51单片机的指令集是这样的。

指令集

如果我们使用wave来编写汇编代码的话,可以看到汇编代码和机器码的对应关系

汇编对应机器码

我们随便解析一个指令

 CLR P1.4        ; 置0,CLR P1.5        ; 置0,CLR P1.6        ; 置0,

这三条指令是把 对应的GPIO口拉低的,这三条指令对应的机器码是

0009H C294 CLR P1.4
000BH C295 CLR P1.5
000DH C296 CLR P1.6

我们看看指令集里面的C2是干嘛的

CLR bit 直接位清  C2

那后面对应的 94是什么意思呢?看看这个图片就明白了,P1口的基地址是90H,P1.4就是偏移 4位,那就是94H了

外设端口地址

#后续

这篇文章就先讲这么多,还有hex和bin文件的关系,还是有很多东西可以深挖的,后面在讲讲。

我们知道了CPU的机器指令集,可以修改hex让CPU按照我们的想法去工作,听起来还是很酷的。

  推荐阅读:

    专辑|Linux文章汇总

    专辑|程序人生

    专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

节日才需要快乐吗?

---- 当然需要天天快乐2020年的国庆和中秋是挺特别的,也是国庆,也是中秋,而且今天还能看NBA总决赛助兴。这么愉快的节日,祝我们的国家繁荣昌盛,国泰民安,也祝大家中秋快乐,当然中秋后也需要快乐…

我在富士康13年

以下是一个读者朋友的日记---- ???? 有点恨铁不成钢的感觉这个读者跟我一样的年纪,都是89年,好吧,说到这里突然觉得又马上要老一岁了,因为小云跟我说,我马上就要过生日了,我从来就记不清自己的生日&…

域名服务器的配置文档,dns域名服务器的配置

dns域名服务器的配置 内容精选换一换使用mount命令挂载文件系统到云服务器,云服务器系统提示timed out。原因1:网络状态不稳定。原因2:网络连接异常。原因3:云服务器DNS配置错误,导致解析不到文件系统的域名&#xff0…

广东阳西的小城生活

国庆放假,回小云老家,广东阳江阳西县。我们是昨天下午5点出发,晚上11点到家,刚好错开拥堵高峰,不过在沿江高速上川岛附近还是遇到了交通堵塞,一直缓缓前行,等到我们通过那个事故点的时候&#x…

10.5 0819吉米牛逼

吉米真牛逼,这场比赛热火赢得漂亮,没有阿德巴约,没有德拉季奇的情况下,吉米硬生生把自己变成了詹姆斯。右侧45度拿球,突破顶着老詹急停跳投,又一次在老詹面前拿下两分,马上回防,面对…

既生Flash,又何生EEPROM?

我们正常编译生成的二进制文件,需要下载烧录到单片机里面去,这个文件保存在单片机的ROM中,ROM这个名称指的是「read only memory」的意思,所有可以完成「read only memory」这种特性的存储介质都可以称为ROM,我们一般使…

文本或代码中 \n 和 \r 的区别

我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符,比如:printf("hello world!\r\n");那你知道这些 \n 和 \r 的区别吗?# 关于「 \n 」 和「 \r 」在ASCII码中,我们会看到有一类不可显示的字符,叫控制…

中兴5G和展锐原厂芯片开发,怎么选?

最近跟一个读友聊天,谈到的还是offer选择的问题,我觉得讨论这个问题比讨论技术问题更加重要「特别是刚出校门的学生,选择一个好的行业比刚毕业的薪资重要」。当然了,肯定有人跟我说我不务正业,整天瞎BB,好的…

40张动图揭示各种传感器工作原理!

应变加速度感应器▼称重式料位计▼电子皮带秤重示意图▼电子吊车秤▼荷重传感器用于测量汽车衡的原理▼荷重传感器的应用▼TiO2氧浓度传感器结构及测量电路▼布料张力测量及控制原理▼直滑式电位器控制气缸活塞行程▼电位器式传感器▼陶瓷湿度传感器▼多孔性氧化铝湿敏电容原理…

lpad与rpad

--lpad(str, n, [pad_str])--rpad(str, n, [pad_str])-- 如果n<length(str),则显示substr(str,1,n)-- 否则&#xff0c;分别从左边和右边使用pad_str进行填充-- 其中n表示最后输出结果字符串的长度-- 如果pad_str为空&#xff0c;则用空格来填充select lpad(abc,2,#) from d…

git log 你学废了吗?

# 前言Git 是一个工具&#xff0c;用来管理代码的东西&#xff0c;要是Git 使用不好&#xff0c;确实还是挺尴尬的&#xff0c;我今晚看了个文章&#xff0c;发现Git log 是的玄机都还很多。比如这样的# git log --help如果觉得git 还不会用&#xff0c;可以看看git log --help…

别错过校招

我不是很想讨论这个问题&#xff0c;也没有想过我现在要用这个话题做文章的标题&#xff0c;这篇文是提醒准备毕业的同学们&#xff0c;校招非常重要。今天晚上&#xff0c;一个微信好友问「发哥&#xff0c;我现在研究生毕业&#xff0c;但是自己的基础非常不好&#xff0c;也…

spring集成 log4j + slf4j

以maven web项目为例&#xff0c; 首先、在pom文件引入相关依赖&#xff0c;如下&#xff08;spring官网文档有介绍&#xff09;&#xff1a; <dependencies><!-- spring 相关 --><dependency><groupId>org.springframework</groupId><artifa…

90后中国程序员“黑吃黑”博彩网站,半年获利256万,判刑11年半

一个90后程序员&#xff0c;在短短两年的时间里&#xff0c;非法控制67万台计算机&#xff0c;还利用漏洞“黑吃黑”博彩网站&#xff0c;半年从中获利256万余元……近期&#xff0c;浙江省杭州市西湖区人民法院对这起黑客大案进行了一审宣判。法院以诈骗罪、非法控制计算机信息…

用一张图片告诉你芯片设计

#推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言嵌入式Linux微信扫描二维码&#xff0c;关注我的公众号

【学习总结】Markdown 使用的正确姿势

参考资料&#xff1a; Learning-Markdown 入门参考 注&#xff1a;原博可能对GitHub中的Markdown格式更适用。ps&#xff1a;在王熊猫的GitHub里也有相关格式的攻略&#xff0c;可一并参考学习。关于表情的cheatsheet ? &#xff08;似乎不太好&#xff0c;哈哈&#xff09;1、…

MTK 平台TP调试遇坑

#前言最近在调试我们项目上的TP驱动&#xff0c;奈何一直不能使用&#xff0c;而且这个项目的硬件确定是没有问题的「这个是前提」&#xff0c;我们在软件上提升了SDK基线&#xff0c;在之前的基线版本上软件是没有问题的。然后我就赶紧检查了两个方面确定TP的供电是不是正常的…

51nod 1379 索函数

Fib[0]0,Fib[1]1,Fib[n]Fib[n-1]Fib[n-2] if n>1. 定义索函数Sor(n)Fib[0]| Fib[1] |Fib[2]|…|Fib[n]. 给定整数n&#xff0c;要求计算Sor(n)%1,000,000,007(1e97). Input第1行&#xff1a;给出一个整数T&#xff0c;表示有T组数据。(1<T<10000) 第2行到T1行&#xf…

昨天小米股价大涨的背后:UWB芯片到底是个什么鬼?

小米10月12日发布了“一指连”小米UWB技术。小米称该技术赋予手机与智能设备空间感知能力&#xff0c;手机指向设备即可定向操控&#xff0c;使小米在“通往未来之路上再迈一步”。来源&#xff1a;腾讯自选股受此消息利好&#xff0c;截止10月12日收盘&#xff0c;小米集团港股…

当你使用微信和QQ的时候,请不要忘记ICQ这个伟大的公司!

距离 ICQ 创立已经 24 年了&#xff0c;仿佛已经跨越了一代人的年纪&#xff0c;而今&#xff0c;我们似乎无法在互联网上找到太多关于 ICQ 的信息。如果有人不知道 ICQ 的话&#xff0c;可以告诉你 ICQ 才是互联网通讯的鼻祖&#xff0c;而不是 QQ、MSN、微信、Facebook。ICQ …