Как определить переменную, которая занимает пробелы нескольких других переменных?

Этот код написан в формате MS ARM. Мне нужно определить переменную с именем psxRegs который будет занимать именно пространства переменных из reg в intCycle так что я могу его экспортировать. Однако я не знаю, как этого добиться. Как это может быть сделано?

    AREA    |.bss|,DATA,READWRITE,ALIGN=4

invc_ptr          SPACE 4
address           SPACE 4

;psxRegs
reg               SPACE 128
lo                SPACE 4
hi                SPACE 4
reg_cop0          SPACE 128
reg_cop2d         SPACE 128
reg_cop2c         SPACE 128
pcaddr            SPACE 4
                  SPACE 4
                  SPACE 4
                  SPACE 4
intCycle          SPACE 256

rcnts             SPACE 7*4*4
mem_rtab          SPACE 4

1 ответ

Решение

При использовании ассемблера, то, что вы считаете именованными переменными, на самом деле являются только метками, ссылающимися на области памяти. Это означает, что нечто подобное имеет эффект, описанный ниже:

psxRegs:
reg               SPACE 128
lo                SPACE 4
hi                SPACE 4

reg, lo а также hi используются для определения именованных меток, которые можно использовать в вашем коде для получения адреса (после сборки) определенных областей памяти. Очень похожим образом, psxRegs: определяет метку, но не резервирует память. На самом деле это псевдоним для reg поскольку память не зарезервирована, когда она определена.

Это может иметь и другие последствия в вашем случае. Не ясно, если вы просто ищете псевдоним для reg или если вы пытаетесь также ссылаться lo а также hi, Вы можете получить доступ lo а также hi путем доступа [psxRegs+128] а также [psxRegs+132] соответственно. Тем не менее, это может быть совершенно ненужным, так как вы можете получить доступ к тем же значениям через [reg+128] а также [reg+132],

Обратите внимание, что : задний psxRegs может или не может потребоваться в вашем ассемблере. Я бы порекомендовал сначала попробовать без двоеточия. Если это не удается собрать, добавьте двоеточие.

Другие вопросы по тегам