Я пытаюсь преобразовать код C в код сборки Y86.Как вы выделяете пространство для нескольких массивов в сборке Y86?
Что произойдет, если у вас есть несколько объявлений массива, такие как:
int a[100], b[100];
Пусть каждое целое 4 байта. Откуда вы знаете, где в памяти указывать для pos. директивы, чтобы вы не теряли пространства?
<Assembly code begins here>
...
halt
# Array initialization begins here
.pos ?
A:
.long 0
.pos ?
B:
.long 0
Вы используете стек. Нефиксированные ячейки памяти. Все это простая арифметика –
Хм, хорошо, это означает, что мне просто нужно будет отслеживать позиции памяти начала каждого массива? Например, я знал, что начальные позиции для моих двух массивов были в 0 и 400, я должен был бы рассматривать все как смещение из указателя стека? – CowZow
Также: предположим, что у меня было 10 массивов. Должен ли я отслеживать начальную позицию памяти каждого массива как перемещение из указателя стека? Или есть лучший способ сделать это? Потому что не станет ли он запутываться со всем жестким кодированием значений смещения? – CowZow