Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 编写汇编程序的见解_Assembly - Fatal编程技术网

Assembly 编写汇编程序的见解

Assembly 编写汇编程序的见解,assembly,Assembly,我定义了一个指令集,它只有加载、存储、移动、加法和减法运算。现在我想编写一个汇编程序,它将获取一个包含我定义的指令的文件,并生成可执行代码 我知道编译器构造的理论,如扫描、解析、中间代码等。我想用C编写。我已经浏览了一些链接,如compilers.iecc.com/crenshaw/和其他几个链接 我陷入了一些问题,比如如何将我的指令映射到底层处理器提供的指令?如何为x86以及68000生成可执行代码等。我定义了一个非常小的指令集,我不想为了简单而进行优化。有谁能帮我回答上述问题并给我一些见解吗

我定义了一个指令集,它只有加载、存储、移动、加法和减法运算。现在我想编写一个汇编程序,它将获取一个包含我定义的指令的文件,并生成可执行代码

我知道编译器构造的理论,如扫描、解析、中间代码等。我想用C编写。我已经浏览了一些链接,如
compilers.iecc.com/crenshaw/
和其他几个链接


我陷入了一些问题,比如如何将我的指令映射到底层处理器提供的指令?如何为x86以及68000生成可执行代码等。我定义了一个非常小的指令集,我不想为了简单而进行优化。有谁能帮我回答上述问题并给我一些见解吗?

如果你正在构建一个汇编程序,那么你的工作量和复杂性要比编译器少得多。首先要看的是开源汇编程序,比如or,从中你可以了解如何生成代码


在我看来,最好的方法是生成一个中间表示或字节码(如果您感兴趣,您甚至可以为它生成一个VM),然后创建一个状态结构来保存每个机器目标的公共数据和生成函数。由于您的指令集很小,这应该很容易,所有的生成都可以使用循环中的开关来完成。

这是一个非常开放的问题。你能问一些更具体的问题吗?您可以从大多数芯片制造商处下载有关指令集的文档。(Intel和Motorola的68k参考)为了汇编程序,你需要将汇编指令翻译成目标芯片的指令(例如x86或68k)。你真的应该在句子之间加空格。让它更容易阅读。@CodyGray:我就是这么做的,直到你的编辑破坏了我的编辑--