mirror of
https://github.com/Leonmmcoset/CMLeonOS.git
synced 2026-04-21 19:24:00 +00:00
实现用户态程序
This commit is contained in:
@@ -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'],
|
||||
}),
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
播放系统提示音。
|
||||
|
||||
|
||||
58
docs/cmleonos/docs/syscall.md
Normal file
58
docs/cmleonos/docs/syscall.md
Normal 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,会导致运行失败
|
||||
- 输入输出行为与控制台一致,建议程序自行处理提示文本与换行
|
||||
Reference in New Issue
Block a user