# MyMixal.Net **Repository Path**: leiye2017/MyMixal.Net ## Basic Information - **Project Name**: MyMixal.Net - **Description**: Mix al - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mixal.NET 作者:安德烈·西曼诺夫斯基,德米特里·沙波伦科夫 圣彼得堡州立大学, 数学与力学系, 软件工程主席,2001年。 ## 致谢 特别感谢Andrey A.Terekhov对项目总体管理的贡献, 以及他给整个事业带来的活力。 感谢安东·莫斯卡尔总是有点神秘。 ## 如何构建编译器 要构建编译器,请从包的根目录运行"BuildAll"批处理文件。 ## 编译Mixal程序 要编译Mixal文件,请键入: >MixNet.exe (options)* <源文件名> [目标文件名] Mixal源程序可以位于不同于编译器的目录,但运行时支持库(MixRuntime.dll)应该是与编译器的可执行文件在同一目录中。 ### 编译器有以下选项 1. -d 发出调试信息 2. -s 处理TAOCP中的ALF指令(即未引用) 3. -i 发出特殊的调试代码。这强制编译器发出调试代码每次混合指令后。调试代码转储源中的行数与混合指令和混合寄存器状态对应的文本执行指令后。 4. -g 生成代码,增强了对自我修改程序的支持。有时这有助于使自我修改程序正常工作编译之后。 5. -l 生成DLL而不是EXE。这应该用于基于混合物的成分开发:-)(见互操作性示例)。如果这个选项打开时,编译器不生成周围的异常处理程序基本程序代码。这意味着MIX DLL的使用者应该处理混合运行时异常。 ## Mixal.NET中支持的设备 除19(控制台)以外的所有混合设备都在Mixal.NET中实现以扩展名为".mio"的文件的形式。设备之间的通信 文件名如下 1. 设备0-7(磁带单元) -"tape_\.mio",其中"num"是设备的数量 2. 设备8-15(磁盘和磁鼓) -"disk_\.mio" 3. 设备16(读卡器) -"card-in.mio" 4. 设备17(读卡器) -"card-out.mio" 5. 设备18(打印机) -"printer.mio" 6. 设备19(打字机终端)-标准输出 7. 设备20(纸带) -"ptape.mio" ## 关于自修改程序的说明 当然,一般情况下,自我修改程序无法翻译正确的静态代码。混合的事情更复杂,因为每一个使用混合"子程序"的程序都是自动修改的。NET支持这些"子例程",但有一个限制:内容寄存器"rJ"不应在程序中使用,除非用于传输控制。如果你有真正的自我修改混合程序,你可以尝试"-g"选项生成目标代码,但不能保证成功。