装配中耗尽标签名称

use*_*293 10 assembly labels

Heyo,

我上大学的班级让我们编写程序集.到目前为止,我从未真正意识到C的易用性.

现在,当我在汇编程序中编程时,我经常需要使用标签来生成while/for/if循环和条件,例如:

SKIP:
    ...
COMP:ADD R1, R1, #0 ;Check for equality
     BRZ WHILEEND
     ...            ;code inside the while loop
     JMP COMP       ;Return to while loop
WHILEEND:
     ...
Run Code Online (Sandbox Code Playgroud)

所以,在这个while循环(例子)中,我为子程序使用了1个标签,为循环本身使用了2个标签.对于我在汇编中所做的所有循环和分支,我已经没有好的标签名称,你们做了什么来保持它的多样性和描述性?

Mar*_*tin 14

大多数装配工允许本地标签:

routine_1:
  ...
.loop:
  ...
  jne .loop

routine_2:
  ...
.loop:
  ...
  jne .loop
  ...
  jmp routine_1.loop
Run Code Online (Sandbox Code Playgroud)

匿名标签,您可以重复使用相同的标签名称并引用"最近向后"或"最近向前":

routine_1:
  ...
@@:
  ...
  jne @b

routine_2:
  ...
@@:
  ...
  jne @b
Run Code Online (Sandbox Code Playgroud)

(b表示倒退)

如果你的汇编程序都不支持,我想你可以在所有本地标签前加上相关例程的标签:

routine_1:
  ...
routine_1.loop:
  ...
  jne routine_1.loop
Run Code Online (Sandbox Code Playgroud)