Skip to content

Commit a4437de

Browse files
committed
Implemented jasmin arraylength instruction
1 parent 140f2b3 commit a4437de

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import org.specs.comp.ollir.*;
44

5-
import java.util.ArrayList;
6-
import java.util.HashMap;
7-
import java.util.Objects;
5+
import java.util.*;
86

97
import static java.lang.Integer.parseInt;
108
import static java.lang.Math.abs;
@@ -77,7 +75,8 @@ public static String getStoreInstruction(Element element, HashMap<String, Descri
7775
public static String loadInvokeArguments(ArrayList<Element> listOfOperands, HashMap<String, Descriptor> varTable) {
7876
String statementList = "";
7977
for (Element argument: listOfOperands) {
80-
statementList += getLoadInstruction(argument, varTable); }
78+
statementList += getLoadInstruction(argument, varTable);
79+
}
8180
return statementList;
8281
}
8382

@@ -122,7 +121,14 @@ public static String getNewInstruction(CallInstruction instruction, HashMap<Stri
122121
public static String getNewArrayInstruction(CallInstruction instruction, HashMap<String, Descriptor> varTable) {
123122
String statementList = "";
124123
statementList += loadInvokeArguments(instruction.getListOfOperands(), varTable);
125-
statementList += "\tnewarray int\n"; // TODO: change array type
124+
statementList += "\tnewarray int\n";
125+
return statementList;
126+
}
127+
128+
public static String getArrayLengthInstruction(CallInstruction instruction, HashMap<String, Descriptor> varTable) {
129+
String statementList = "";
130+
statementList += getLoadInstruction(instruction.getFirstArg(), varTable);
131+
statementList += "\tarraylength\n";
126132
return statementList;
127133
}
128134

@@ -210,6 +216,7 @@ public static String createCallStatement(CallInstruction instruction, HashMap<St
210216
statementList += getInvokeVirtualInstruction(instruction, varTable);
211217
break;
212218
case arraylength:
219+
statementList += getArrayLengthInstruction(instruction, varTable);
213220
break;
214221
case ldc:
215222
statementList += "\tldc " + ((LiteralElement)instruction.getFirstArg()).getLiteral() + '\n';

0 commit comments

Comments
 (0)