实现用户态程序

This commit is contained in:
2026-03-27 21:32:18 +08:00
parent 7a7d44e9d8
commit 0988f4c820
13 changed files with 293 additions and 5 deletions

View File

@@ -10,7 +10,7 @@ export default defineUserConfig({
theme: defaultTheme({
// logo: 'https://vuejs.press/images/hero.png',
navbar: ['/', '/get-started', '/lua', '/commands'],
navbar: ['/', '/get-started', '/lua', '/commands', '/syscall'],
}),

View File

@@ -764,6 +764,24 @@ branswe <file>
branswe script.brs
```
### runbin
运行 MSE 二进制程序文件(由 ManagedSoftwareExecution 执行)。
**用法:**
```bash
runbin <file>
```
**示例:**
```bash
runbin 0:\apps\demo.bin
```
**说明:**
- `runbin` 会读取指定二进制文件并按指令逐条执行
- 当前内置 3 个系统调用syscall 0/1/2
- 详细 syscall 规范见 [Syscall 文档](/syscall.html)
## 实用工具命令
### calc
@@ -856,6 +874,26 @@ exportbackground 0:\mywallpaper.bmp
- 如果不指定输出路径,默认导出到 0:\background.bmp
- 导出的壁纸为BMP格式
### exporttestexe
导出测试可执行文件到指定路径。
**用法:**
```bash
exporttestexe [output_path]
```
**示例:**
```bash
exporttestexe
exporttestexe 0:\test.exe
```
**说明:**
- 如果不指定输出路径,默认导出到 0:\test.exe
- 导出的可执行文件为MSE格式
### beep
播放系统提示音。

View File

@@ -0,0 +1,58 @@
# 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会导致运行失败
- 输入输出行为与控制台一致,建议程序自行处理提示文本与换行