2014-01-19 2 views
0

Если с помощью директивы ассемблера WHILE, intialised как:ARM Хотя директива - повторение метки

GBLA w 
    WHILE w < 10 
w SETA w+1 
    ; code 
    WEND 

Как мы можем иметь ;code быть повторен сегмент с участием метку (скажем, мы условно перейти обратно к нему в сегменте)?

Я пробовал делать:

w.label ;code 
      ;code 
      B{cond} w.label 

А также label.w.

Я также попытался сформировать макрос, в качестве параметра был принят w, но он не хотел присоединяться к label к цифровому значению таким образом.

Действительно ли . работает только для строк, и если да, то могу ли я конкатенировать строку и литерал каким-то другим способом?

Или каким другим способом можно включить ярлык в сегмент, который необходимо повторить w раз?

ответ

1

Это одна из причин local labels существует:

1: ;code 
     ;code 
     B{cond} 1b @ look (b)ackwards for the nearest "1:" 

Поскольку они всегда полны решимости последнего/следующий матч видел, и не генерируют символы, они могут быть однозначно дублироваться столько, сколько вы хотите.

+0

Не знал, что они существуют, спасибо. – OJFord