首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存是否以二进制形式存储在ARM组件中?

内存是否以二进制形式存储在ARM组件中?
EN

Stack Overflow用户
提问于 2019-11-14 23:40:56
回答 3查看 405关注 0票数 0

假设我执行了一条指令,比如MOV R1,#9。这会将二进制数9以二进制形式存储在ARM汇编的内存中吗?ARM组件代码是否会看到存储在内存中R1位置的数字00001001?如果不是,它将如何以二进制形式存储十进制数9?

EN

回答 3

Stack Overflow用户

发布于 2019-11-15 00:48:52

处理器的存储和逻辑由门组成,门将值处理为电压。为了简单起见,只识别了两个电压:高和低,构成了一个二进制。

处理器可以使用简单的布尔逻辑(AND、OR等)操作(计算)这些值-这称为combinational logic

处理器还可以使用逻辑中的循环(这里考虑循环,就像图中的循环)存储二进制值一段时间,称为循环循环( sequential logic. )。循环创建一个反馈循环,该循环将保留值,直到被告知保留新的值(否则断电)。

大多数有意义的事情都需要多个二进制值,我们可以称之为位串。我们可以将这些位串看作数字、字符等,通常取决于上下文。

处理器的寄存器是用来存储位串的时序逻辑的一个例子,这里是每个寄存器32位的串。

机器代码是处理器的语言。处理器将位串解释为要执行的指令序列。有些位串命令处理器将值存储在寄存器中,寄存器由使用顺序逻辑串的门组成,这里是每个寄存器32位:在二进制中,每位将一个值存储为电压。

寄存器是存储,但我们可以实际可视化它们的唯一方法是使用机器代码指令检索它们的值,以便将这些值发送到输出设备,以便以数字、字符、颜色等形式查看。

简而言之,如果你发送一个数字#9到一个寄存器,它将存储一个特定的位串,一些后续的机器代码指令将能够检索到相同的位模式。9是否代表数字9或制表符或其他字符是一个解释问题,这是通过编程完成的,这是最终转换为机器代码指令序列的源代码。

票数 0
EN

Stack Overflow用户

发布于 2019-11-15 02:15:33

在计算机中,所有东西都是二进制的;十进制和十六进制只是人类友好的表示法,用于写入二进制位模式表示的值。

即使您将一个二进制整数转换为一个十进制数字字符串(例如,通过重复除以10来获得digit=remainder),这些数字仍然以ASCII码的形式存储在每个字节中。

例如,数字'0'由ASCII / UTF-8位模式00110000 (又称十六进制0x30,又称十进制48 )表示。

我们称之为“转换为十进制”,因为值现在以一种可以复制到文本文件或视频存储器中的方式表示,在那里它将以一系列十进制数字显示给人类。

但实际上,所有信息仍然以开或关的二进制位表示。在计算机内部不存在能够使用例如十个不同电压电平中的一个来表示单个10状态值的单个导线或晶体管。它总是要么一直开着要么一直开着。

https://en.wikipedia.org/wiki/Three-valued_logic,也就是三进制逻辑,是非二进制逻辑的常见例子。真正的十进制逻辑是n值逻辑的一个实例,其中一个“位”可以具有10个值中的一个,而不是3个值中的一个。

实际上,CPU是严格基于二进制(布尔)逻辑的。我提到三进制逻辑只是为了说明计算机真正使用十进制逻辑/数字而不仅仅是使用二进制来表示十进制字符的真正含义。

票数 0
EN

Stack Overflow用户

发布于 2019-11-15 02:25:37

处理器有许多地方来存储内容;你可以称之为内存层次结构:离处理器很近的“内存”非常快而且很小,例如寄存器,而远离处理器的“内存”又慢又大,比如磁盘。在不同级别的高速缓冲存储器和主存储器之间。

由于这些存储器在技术上非常不同,因此访问寄存器的方式也不同:通过在汇编代码中直接指定寄存器(如MOV R1, #9中的R1 )来访问寄存器,而主存储位则用“地址”连续编号。

因此,如果执行MOV R1, #9,二进制数9存储在CPU的寄存器1中,而不是存储在主存中,并且读出R1的汇编代码将读回数字9。

所有数字都以二进制格式存储。最广为人知的是整数(例如,十进制9的二进制00001001 )和浮点数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58860610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档