Объявление локальных переменных в сборке - PullRequest
0 голосов
/ 17 марта 2010

Можно ли выделить ассемблер локально в памяти?

Например, рассмотрим следующую (полностью надуманную) ситуацию:

У меня есть два макроса, один из которых зависит отдругой.Первый:

minimum MACRO dest, num1, num2
; Finds the minimum of two unsigned numbers, stores the result in dest

А второй:

tripMin MACRO dest, num1, num2, num3
; Finds the minimum of three unsigned numbers, stores the result in dest

minimum firstMin, num1, num2
minimum secondMin, num2, num3
minimum dest, firstMin, secondMin

(я знаю, что это не реалистичный пример по разным причинам, но потерпите меня).

Предполагая, что все регистры заняты, есть ли способ объявить firstMin и secondMin локально в макросе?

Или мне лучше освободить регистр, поместив его значение в стек и вернув его обратно, когда я закончу?

1 Ответ

1 голос
/ 17 марта 2010

локально-объемная память - это понятие, которое применяется только к языкам с областями, а не к ассемблеру.

Если бы вы написали то же самое, что и функция, скажем, C, ваши временные данные будут храниться в стеке (или в доступных регистрах, если они есть, в зависимости от ABI). Вы можете имитировать то же самое. Способ загрузки / извлечения значений из стека зависит от того, какой язык ассемблера вы используете.

Однако, это начинает выглядеть ужасно как вызов функции.

...