Skip to content

Commit 37a2961

Browse files
committed
Implemented jasmin array access
1 parent 317ef5c commit 37a2961

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/main/pt/up/fe/comp2023/jasmin/JVMInstructionUtils.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
public class JVMInstructionUtils {
1212

1313
public static String getLoadInstruction(Element element, HashMap<String, Descriptor> varTable) {
14-
System.out.println(element.getType());
1514
if (element.isLiteral()) {
1615
int literal = parseInt(((LiteralElement)element).getLiteral());
1716
if (literal >= 0 && literal <= 5)
@@ -194,10 +193,18 @@ public static String createNoperInstruction(SingleOpInstruction instruction, Has
194193

195194
public static String createAssignStatement(AssignInstruction instruction, HashMap<String, Descriptor> varTable) {
196195
Element assignElement = instruction.getDest();
197-
198196
String statementList = "";
197+
198+
if (assignElement instanceof ArrayOperand) {
199+
statementList += getLoadInstruction(assignElement, varTable);
200+
statementList += getLoadInstruction(((ArrayOperand)assignElement).getIndexOperands().get(0), varTable);
201+
}
202+
199203
statementList += JasminUtils.handleInstruction(instruction.getRhs(), varTable, true);
200-
statementList += getStoreInstruction(assignElement, varTable);
204+
if (assignElement instanceof ArrayOperand)
205+
statementList += "\tiastore\n";
206+
else
207+
statementList += getStoreInstruction(assignElement, varTable);
201208
return statementList;
202209
}
203210

0 commit comments

Comments
 (0)