Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 为什么附加';m';在臂组件中注册后?_Assembly_Arm - Fatal编程技术网

Assembly 为什么附加';m';在臂组件中注册后?

Assembly 为什么附加';m';在臂组件中注册后?,assembly,arm,Assembly,Arm,我想知道为什么在ARM组件中的寄存器后附加“m”。 e、 g: 在手册中,msr命令的定义如下: MSR{cond} psr_fields, Rm ^ 这并不是说你必须在寄存器名后面写“m”,Rm只是R0,R1。。。R151;事实上,在一些情况下,“m”是斜体的,以表明它只是一个数字的占位符(我实际上看到了Rn,对于像我一样习惯x86的人来说,这可能更清楚,其中rm通常表示“寄存器或内存操作数”) 你的例子其实很简单 msr cpsr,r0 这

我想知道为什么在ARM组件中的寄存器后附加“m”。 e、 g:

在手册中,msr命令的定义如下:

MSR{cond} psr_fields, Rm
                       ^

这并不是说你必须在寄存器名后面写“m”,Rm只是R0,R1。。。R151;事实上,在一些情况下,“m”是斜体的,以表明它只是一个数字的占位符(我实际上看到了Rn,对于像我一样习惯x86的人来说,这可能更清楚,其中rm通常表示“寄存器或内存操作数”)

你的例子其实很简单

msr cpsr,r0

  • 这一原则应该是这种排版惯例的理念;尽管如此,在所有的
    msr
    参考文献中,我发现PC(R15)在某些备注中被明确排除在外,在某些型号中SP(R13)也被排除在外。一般来说,R13-15有些特殊,文档甚至说R15

  • 这并不是说你必须在寄存器名后面写“m”,Rm只是R0,R1。。。R151;事实上,在一些情况下,“m”是斜体的,以表明它只是一个数字的占位符(我实际上看到了Rn,对于像我一样习惯x86的人来说,这可能更清楚,其中rm通常表示“寄存器或内存操作数”)

    你的例子其实很简单

    msr cpsr,r0
    

  • 这一原则应该是这种排版惯例的理念;尽管如此,在所有的
    msr
    参考文献中,我发现PC(R15)在某些备注中被明确排除在外,在某些型号中SP(R13)也被排除在外。一般来说,R13-15有些特殊,文档甚至说R15

  • 那么,是什么让您将文档中的Rm解释为含义
    R0m
    ,而不仅仅是
    R0
    R
    表示寄存器,m不是文字;它标识哪个寄存器-0到12。如果您尝试过,您会发现代码无法汇编-后缀m无效,因此这个问题毫无意义。注意add语法如何显示Rd、Rn、shifter操作数?这些只是r0-r15,但您需要区分指令中的两个寄存器,这样当您查看上面的机器代码时,您可以在指令中为该寄存器放置正确的位模式。那么,是什么让您将文档中的Rm解释为含义
    R0m
    ,而不是
    r0
    R
    表示寄存器,m不是文字;它标识哪个寄存器-0到12。如果您尝试过,您会发现代码无法汇编-后缀m无效,因此这个问题毫无意义。注意add语法如何显示Rd、Rn、shifter操作数?这些只是r0-r15,但您需要区分指令中的两个寄存器,以便在查看上面的机器代码时,可以在指令中放置该寄存器的正确位模式。