Как правильно обновить значение, переданное в сборке?
Я использую архитектуру SPARC. Я должен обновить число long, переданного в качестве аргумента, не возвращая его, но я не знаю, как это сделать, потому что входные регистры используются как для параметров, так и для возврата значения. Я видел, используя такие инструкции, как
add %l0, %l1, %i1
что возможно изменить содержимое регистра i, но, насколько я могу судить, это изменяет "копию" параметра, а не сам параметр. Я экспериментировал с командой load и командой store такими способами, как
ld [%o1], %i1
а также
st %l1, [%fp-8]
и они, кажется, не меняют то, что мне нужно изменить.
1 ответ
Я понял. Инструкция save делает аргумент доступным в регистре in (в моем случае%i1), и оттуда он просто
st %l1, [%i1 + 1]
и я должен убедиться, что число вместо 4 совместимо с количеством байтов между элементами массива. Так что в этом случае +1 работает для массива символов.