# MSE Syscall 文档

本文档说明 `runbin` 命令当前支持的系统调用（syscall）约定。

## 前置条件

- 指令集初始化已在内核完成（`FGMSECInstructionSet.Install()`）
- 使用 `runbin <file>` 运行二进制程序

## 调用约定

- 当前可用 syscall 数量：`3`
- 索引范围：`0`、`1`、`2`

## syscall 0：输出字符串

**功能：**
将内存中的以 `\0` 结尾字符串输出到控制台。

**参数：**
- `R3`：字符串起始地址

**行为：**
- 从 `R3` 指向地址开始逐字符读取
- 遇到 `\0` 终止输出
- 不自动换行

## syscall 1：读取一行输入

**功能：**
从控制台读取一行文本，并写入可执行程序内存。

**行为：**
- 调用 `Console.ReadLine()`
- 自动在末尾追加 `\0`
- 将结果写入程序内存

**返回值：**
- `R3`：写入字符串的起始地址

## syscall 2：清屏

**功能：**
清空控制台屏幕。

**行为：**
- 调用 `Console.Clear()`

## 最小流程示例

1. 准备符合 FGMSEC 指令集的二进制文件
2. 在 Shell 执行 `runbin <file>`
3. 程序通过 syscall 与控制台交互（输出、输入、清屏）

## 注意事项

- 如果程序调用了未实现的 syscall，会导致运行失败
- 输入输出行为与控制台一致，建议程序自行处理提示文本与换行
