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

Arrays 内存是否以二进制形式存储在ARM组件中?,arrays,loops,assembly,binary,decimal,Arrays,Loops,Assembly,Binary,Decimal,假设我做了一个指令,比如MOV R1,#9。这会将二进制数9以二进制形式存储在ARM组件的内存中吗?臂组件代码是否会看到存储在内存中R1位置的编号00001001?如果不是,它将如何以二进制形式存储十进制数字9?处理器的存储和逻辑由门组成,门将值作为电压进行操作。为简单起见,只识别两个电压:高电压和低电压,形成一个二进制系统 处理器可以使用简单的布尔逻辑(AND、OR等)操作(计算)这些值——这称为 处理器还可以在一段时间内使用称为的逻辑中的循环来存储二进制值。循环创建一个反馈循环,该循环将保留

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

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

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

处理器还可以在一段时间内使用称为的逻辑中的循环来存储二进制值。循环创建一个反馈循环,该循环将保留值,直到被告知保留一个新值(或断电)

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

处理器的寄存器是用于存储位字符串的顺序逻辑的一个示例,此处为每个寄存器32位的字符串

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

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


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

计算机中的一切都是二进制的;十进制和十六进制只是用于写入二进制位模式表示的值的人性化符号

即使将二进制整数转换为十进制数字字符串(例如,通过重复除以10得到数字=余数),这些数字在ASCII中每字节存储一个

例如,数字
'0'
由ASCII/UTF-8位模式
00110000
aka hex 0x30 aka decimal 48表示

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

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


aka三值逻辑是非二值逻辑的常见例子。真正的十进制逻辑是n值逻辑的一个实例,其中一个“位”可以有10个值中的一个,而不是3个值中的一个


实际上,CPU基于严格的二进制(布尔)逻辑。我提到三元逻辑只是为了说明计算机真正使用十进制逻辑/数字,而不是仅仅使用二进制来表示十进制字符的真正意义;您可以将其称为内存层次结构:非常靠近处理器的“内存”非常快且很小,例如寄存器,而远离处理器的“内存”则非常慢且很大,如磁盘。介于不同级别的缓存内存和主内存之间。
由于这些存储器在技术上非常不同,因此访问方式不同:寄存器通过直接在汇编代码中指定它们来访问(如
MOV R1,#9
中的
R1
),而主存存储位置则用“地址”连续编号。
因此,如果执行
MOV R1,#9
,二进制数9存储在CPU的寄存器1中,而不是主内存中,读取
R1
的汇编代码将读回数字9。

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

R1是一个32位寄存器。是的,当涉及到实际硬件时,一切都是以二进制存储和处理的。
ARM汇编代码会看到存储在内存中R1位置的数字00001001吗?
-这是一个相当尴尬的说法。代码看不到任何东西,因为它没有眼睛……相关:基本上是同一个问题的早期版本。似乎仍然是用硬件实现的三元逻辑计算机的唯一例子。记得我在大学课程中提到过它吗。。。