gpt4 book ai didi

c# - 构建一个汇编程序

转载 作者:可可西里 更新时间:2023-11-01 08:06:28 27 4
gpt4 key购买 nike

我需要为我构建的 CPU 架构构建一个汇编程序。架构类似于MIPS,但这并不重要。

我开始使用 C#,尽管 C++ 更合适。 (C# 对我来说意味着更快的开发时间)。

我唯一的问题是我无法为这个应用程序提供好的设计。我正在构建一个 2 pass 汇编程序。我知道每次通过时我需要做什么。\

我已经实现了第一遍并且我意识到如果我必须在同一行上排列汇编代码......不会抛出错误。这只意味着解析技术不佳。

所以万能的程序员,汇编之父请教我应该怎么做。我只需要支持符号和数据声明。指令具有固定大小。

如果您需要更多信息,请告诉我。

最佳答案

我写过三四个简单的汇编器。在不使用解析器生成器的情况下,我所做的是对 S-C assembler 进行建模我最了解 6502。

为此,我使用了一种简单的语法 - 一行是以下内容之一:

nothing
[label] [instruction] [comment]
[label] [directive] [comment]

标签是一个字母后跟任意数量的字母或数字。

一条指令是 [operands]

指令是 .XX [操作数]

评论是 * 到行尾。

操作数取决于指令和指令。

包含指令.EQ equate 用于定义常量

.OR设置代码源地址

.HS 十六进制字节串

.AS ascii 字节字符串 - 除空格外的任何定界符 - 无论开始它结束它

.TF输出目标文件

.BS n 预留n个字节的 block 存储

当我写它的时候,我为每个组件写了简单的解析器。每当我遇到一个标签时,我都会把它和它的目标地址放在一个表中。每当遇到我不知道的标签时,我都会将该指令标记为不完整,并将未知标签与需要修复的指令的引用放在一起。

在所有源代码行都通过后,我查看了“to fix”表并试图在符号表中找到一个条目,如果找到了,我就修补了指令。如果不是,那就是错误。

我保留了一张指令名称表和操作数的所有有效寻址模式。当我收到一条指令时,我会尝试依次解析每种寻址模式,直到出现问题为止。

鉴于这种结构,完成整个事情应该需要一天或两天的时间。

关于c# - 构建一个汇编程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/384871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com