相关疑难解决方法(0)

编写简单的x86汇编程序的最佳方法是什么?

我有兴趣为一个爱好项目编写一个x86汇编程序.

起初它对我来说似乎相当直接,但我读到的越多,我发现自己遇到的问题就越多.我并非完全缺乏经验:我已经使用了相当数量的MIPs汇编,并且我已经为学校的C子集编写了一个玩具编译器.

我的目标是编写一个简单但功能强大的x86汇编程序.我不打算建立一个商业上可行的汇编程序,而只是一个业余爱好项目,以加强我在某些领域的知识.所以我不介意我是否没有实现所有可用的功能和操作.

我有很多问题,例如:我应该使用一次通过还是两次通过?我应该使用ad-hoc解析还是定义正式语法并使用解析器生成器来执行我的指令?在什么阶段,我如何解决我的符号的地址?

鉴于我的要求,有人可以建议我在宠物项目汇编程序中使用的方法的一般指导原则吗?

algorithm x86 assembly

16
推荐指数
3
解决办法
4368
查看次数

编写Z80汇编程序 - lexing ASM并使用组合构建解析树?

我对编写汇编程序的概念非常陌生,即使在阅读了大量材料之后,我仍然难以绕过几个概念.

  1. 将源文件实际分解为令牌的过程是什么?我相信这个过程叫做lexing,我已经搜索了一些有意义的实际代码示例,但我找不到一个如此简单的代码示例非常受欢迎;)

  2. 在解析时,是否需要在树上向上或向下传递信息?我问的原因如下,采取:

    LD BC,nn

一旦标记化(???),它需要变成以下的解析树

  ___ LD ___
  |        |
 BC        nn
Run Code Online (Sandbox Code Playgroud)

现在,当遍历此树时,它需要生成以下机器代码:

01 n n
Run Code Online (Sandbox Code Playgroud)

如果说明是:

LD DE,nn
Run Code Online (Sandbox Code Playgroud)

然后输出需要是:

11 n n
Run Code Online (Sandbox Code Playgroud)

这意味着它提出了问题,LD节点是否根据操作数返回不同的东西,或者它是返回某些东西的操作数?这是如何实现的?如果时间允许,更简单的代码示例将是非常好的.

我最感兴趣的是学习一些原始流程,而不是查看先进的现有工具,所以在将我发送给YaccFlex之前请记住这一点.

assembly parsing z80 lexical-analysis

9
推荐指数
2
解决办法
3698
查看次数

什么是"ad-hoc Parsing"?

我已经搜索了这个术语,并且只能找到一些参考文献,但我已经多次提到了它.这些参考文献似乎都不具有"权威性".

最近我可以说,"ad-hoc解析"涉及将输入分成块并处理这些块.也许这是正确的,我不知道.

有人可以帮助我找到一些资源来解释更完整的临时解析吗?该术语的起源是什么(来自学术界等)?什么是临时解析的例子?

parsing

9
推荐指数
1
解决办法
1347
查看次数

使用BNF的编译器编译器

是否有任何理由没有解析器生成器消耗直接BNF?

我熟悉的JavaCCANTLR的,最近碰上了Parse2.似乎每个都有自己的符号.BNF非常容易阅读而其他符号则不然.BNF是明确的.是否有一些固有的原因导致我无法将BNF提供给编译器编译器并获得解析树?

java compiler-construction bnf parser-generator

6
推荐指数
1
解决办法
1618
查看次数

汇编程序是如何编写的以及它们是用什么语言编写的?

如果您上网并下载 asm 汇编程序。它是由什么制成的。它使用什么文件类型?汇编程序本身是如何创建的?

assembly

2
推荐指数
2
解决办法
2593
查看次数