Architecture 通过查看程序集列表文件确定处理器的位数

Architecture 通过查看程序集列表文件确定处理器的位数,architecture,assembly,cpu,microcontroller,cpu-architecture,Architecture,Assembly,Cpu,Microcontroller,Cpu Architecture,在我的计算机入门课上,我们为MC68332微控制器编写了一个汇编程序。我知道这个微控制器是32位的,因为我在数据表中读到了它。我想知道是否有办法通过查看汇编asm源代码时生成的LST文件来确定这一点。这些行中的第一个数字显然是地址;第二个(和第三个)是实际组装的操作码。最后两个有两个16位字的原因是args$01和$02。CLR.L很好地暗示了它是一个32位处理器:“clear longword”。第一列是指令的地址,第二组是要执行的操作(即操作码或指令),最后一个字段是转换为人类可读形式的指令

在我的计算机入门课上,我们为MC68332微控制器编写了一个汇编程序。我知道这个微控制器是32位的,因为我在数据表中读到了它。我想知道是否有办法通过查看汇编asm源代码时生成的LST文件来确定这一点。

这些行中的第一个数字显然是地址;第二个(和第三个)是实际组装的操作码。最后两个有两个16位字的原因是args$01和$02。CLR.L很好地暗示了它是一个32位处理器:“clear longword”。

第一列是指令的地址,第二组是要执行的操作(即操作码或指令),最后一个字段是转换为人类可读形式的指令,通常称为汇编

在这个处理器上,操作码通常消耗16位(2字节)的倍数,这就是为什么您只能看到偶数地址。尽管如此,它还是一个32位处理器,这主要是因为它的地址空间是2^32。这就是为什么你看到的地址有8位宽,每个数字编码4位


你可以从一些指令的
.L
后缀猜出它是一个32位处理器,它是“long”的缩写,通常是32位,因此该处理器还具有处理32位宽指令的能力。

一般来说,你不能仅仅从汇编指令或清单中分辨出来。如果您需要查找助记符,您将了解有关指令的所有信息,它将告诉您将涉及多少位。但即使这样,这也可能不够,因为我可以编写一系列指令或IBM System z大型机,这些指令或大型机只能使用64位寄存器中最低的1/4,或处理存储器中的单个字节,并且您不能仅从代码中判断16个通用寄存器是64位的。或者是古老的霍尼韦尔6000系列代码,它可以基于控制寄存器中的标志位,在寄存器中使用6个6位字符或4个9位字符


这就引出了找到答案的最佳方法——阅读规格表、操作原理或类似指南,并学习说明。学习的越多,就越能体会到使用汇编代码的乐趣。

谢谢,让我们以最后一行为例。143c对应于D2寄存器,0002对应于值2。是这样吗?我不这么认为,因为在第二行中,CLR.ld2转换为4282。你能提供更多的细节吗?不,143c编码move.b,d2,0002是移动到d2的值。如果你的学校没有为你的处理器提供程序员手册,它很可能是在线提供的。