docs: 为类和方法添加详细的 JavaDoc 注释,解释其用途和使用方式

This commit is contained in:
Luke 2025-07-10 17:44:04 +08:00
parent 55c7bae77c
commit e82bac7046

View File

@ -10,24 +10,53 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* CallInstruction 表示一次函数调用格式dest = CALL functionName, arg1, arg2, ... * CallInstruction 表示一次函数调用的中间代码指令
* 形式为dest = CALL functionName, arg1, arg2, ...
*/ */
public class CallInstruction extends IRInstruction { public class CallInstruction extends IRInstruction {
/**
* 调用结果存放的目标虚拟寄存器
*/
private final IRVirtualRegister dest; private final IRVirtualRegister dest;
/**
* 被调用的函数名
*/
private final String functionName; private final String functionName;
/**
* 传递给函数的参数列表
*/
private final List<IRValue> arguments; private final List<IRValue> arguments;
/**
* 构造函数创建一个函数调用指令
*
* @param dest 调用结果存放的目标寄存器
* @param functionName 被调用的函数名
* @param args 参数列表
*/
public CallInstruction(IRVirtualRegister dest, String functionName, List<IRValue> args) { public CallInstruction(IRVirtualRegister dest, String functionName, List<IRValue> args) {
this.dest = dest; this.dest = dest;
this.functionName = functionName; this.functionName = functionName;
this.arguments = List.copyOf(args); this.arguments = List.copyOf(args);
} }
/**
* 获取该指令的操作码
*
* @return 操作码 CALL
*/
@Override @Override
public IROpCode op() { public IROpCode op() {
return IROpCode.CALL; return IROpCode.CALL;
} }
/**
* 获取该指令涉及的操作数目标寄存器和所有参数
*
* @return 操作数列表
*/
@Override @Override
public List<IRValue> operands() { public List<IRValue> operands() {
List<IRValue> ops = new ArrayList<>(); List<IRValue> ops = new ArrayList<>();
@ -36,23 +65,48 @@ public class CallInstruction extends IRInstruction {
return ops; return ops;
} }
/**
* 获取目标虚拟寄存器
*
* @return 目标虚拟寄存器
*/
public IRVirtualRegister getDest() { public IRVirtualRegister getDest() {
return dest; return dest;
} }
/**
* 获取被调用的函数名
*
* @return 函数名
*/
public String getFunctionName() { public String getFunctionName() {
return functionName; return functionName;
} }
/**
* 获取参数列表
*
* @return 参数列表
*/
public List<IRValue> getArguments() { public List<IRValue> getArguments() {
return arguments; return arguments;
} }
/**
* 接受 IRVisitor 访问
*
* @param visitor 访问者
*/
@Override @Override
public void accept(IRVisitor visitor) { public void accept(IRVisitor visitor) {
visitor.visit(this); visitor.visit(this);
} }
/**
* 获取该指令的字符串表示
*
* @return 字符串形式
*/
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(dest + " = CALL " + functionName); StringBuilder sb = new StringBuilder(dest + " = CALL " + functionName);