Is it possible in MIPS to change during execution the value of a label, or to create a label with certain value?
I ask this because when using the instruction lw $a0, label($s0) i want to increment the value of label +4 every time we loop, indicating the new memory address of the array. I am aware I can do lw $a0, label+4($s0) but the new value of label will not be stored.
Any advise?
No. In MIPS you must have a constant outside the parentheses when dereferencing (poor wording). If it were possible to change the value of the label, then it would no longer be constant. To get around this, you could instead do something like
It might be advisable to use addu if s0 will always be non-negative.
EDIT: You cannot change the value of a label. It is solely an alias for a location in memory. In the text section, it’s an alias for the position of the following instruction. In the data section, it’s an alias for the location in memory of the following space.