当前位置:  开发笔记 > 编程语言 > 正文

构建汇编程序

如何解决《构建汇编程序》经验,为你挑选了1个好方法。

我需要为我构建的CPU架构构建汇编程序.该体系结构与MIPS类似,但这并不重要.

我开始使用C#,虽然C++更合适.(C#意味着我的开发时间更快).

我唯一的问题是我不能为这个应用程序提供一个好的设计.我正在构建一个2通道汇编程序.我知道每次传球我需要做什么.

我已经实现了第一遍,我意识到如果我必须在同一行上汇编汇编代码......没有抛出错误.这意味着只有一个糟糕的解析技术.

如此全能的程序员,汇编的父亲启发我如何进行.我只需要支持符号和数据声明.说明书有固定的大小.

如果您需要更多信息,请与我们联系.



1> plinth..:

我写了三四个简单的汇编程序.在不使用解析器生成器的情况下,我所做的就是模拟我最熟悉6502 的SC汇编器.

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

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

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

指令是 [operands]

指令是 .XX [operands]

评论是*到最后一行.

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

包含.EQ的指令等同于定义常量

.OR设置代码的原始地址

.HS十六进制字节串

.AS ascii字节字符串 - 除了空格之外的任何分隔符 - 无论什么开始它结束它

.TF输出目标文件

.BS n保留n个字节的块存储

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

在所有源代码行通过之后,我查看了"修复"表并尝试在符号表中找到一个条目,如果我这样做,我修补了说明.如果没有,那就是错误.

我保留了一个指令名表和操作数的所有有效寻址模式.当我收到指令时,我试图依次解析每个寻址模式,直到有效.

鉴于这种结构,整个事情应该花费一天或两天.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有