Compiler construction 编译器输出的代码生成器
我正在编写一个代码生成器,但没有足够的资源来完成。我只有一个旧软件,它有一个ST语言的编译器。 我要做的是从这个编译器的输出,编写我的代码生成器,也许不是最好的方法,但这是我能做的最好的方法 我的问题是,有人知道.4asm扩展是什么意思吗?我该如何为它编写代码生成器 ps:一些输出代码:Compiler construction 编译器输出的代码生成器,compiler-construction,code-generation,st,Compiler Construction,Code Generation,St,我正在编写一个代码生成器,但没有足够的资源来完成。我只有一个旧软件,它有一个ST语言的编译器。 我要做的是从这个编译器的输出,编写我的代码生成器,也许不是最好的方法,但这是我能做的最好的方法 我的问题是,有人知道.4asm扩展是什么意思吗?我该如何为它编写代码生成器 ps:一些输出代码: .prg program1 clssid 13 var bool rst var u295_initvar inizializzazioni var u295_cicloprova ciclo
.prg program1
clssid 13
var bool rst
var u295_initvar inizializzazioni
var u295_cicloprova cicloprova
var u295_elaboratest elaboratest
var u295_salvadati salvadati
var u295_assegnazioni assegnazioni
var u295_allarmi allarmi
var udint d
var bool testen
var u295_ricercazero ricercazero
var u295_startmotore startmotore
var uint count
var u295_default default
var dint j
var u295_tara tara
var uint countdelay
var u295_blinkled blinkled
bp 0 ;"(27,2)"
stmtbeg 2 ;"(27,2)"
PSHD_IN_32 d
PSHC_01_32
add_udint
POPD_IN_32 d
stmtbeg 3 ;"(28,2)"
PSHC_00_32
POPD_IN_32 j
stmtbeg 4 ;"(29,13)"
PSHC_TX '1.10'
LEAO_ID objid(__global_inst) offsetof(__global,revisioneplc)
MOVE_STRING
stmtbeg 5 ;"(30,1)"
PSHD_IN_1 rst
not_bool
PSHD_GI_8 ch0_in_16_23
PSHC_VV_8 byte#16#f0
and_byte
PSHC_VV_8 byte#16#a0
eq_byte
PSHD_IN_1 testen
or_bool
and_bool
jmpcn @L0 ;to else
stmtbeg 6 ;"(32,5)"
PSHC_01_1
POPD_IN_1 rst
stmtbeg 7 ;"(33,2)"
CALB_PN clsid(u295_initvar) inizializzazioni
stmtbeg 8 ;"(34,2)"
PSHC_00_1
POPO_IN_1 ricercazero offsetof(u295_ricercazero,start)
CALB_PN clsid(u295_ricercazero) ricercazero
因此,这里有一个编译器为ST语言生成的汇编语言源代码。ST指: IEC 1131-3 PLC语言规范IEC,1993定义的PLC结构化文本语言。结构化文本ST是一种用于PLC的高级、块结构、基于文本的语言。它与Pascal类似,但由于其PLC应用程序,它有许多重要的区别。ST程序在PLC扫描中重复执行,并在固定的PLC内存映射I/O基础上运行。大多数ST实施符合IEC 1131-3 ST规范24。关于ST的一般特征的其他信息见附录A 如果源代码程序在ST中,那么可以使用ST编译器进行编译。如果您有一个PLC,那么您应该拥有将生成的代码编译成它可以接受的形式所需的工具。如果你没有这些东西,这将是一场艰苦的战斗 如果此代码位于名为.4asm的文件中,则这是编译到特定PLC中的汇编语言。如果你知道什么是PLC,你就知道什么是编译器
代码看起来像意大利摩托车。我想你需要找一个对这类事情比你通常在这里能找到的更专业的人。好的一点,事实上我注意到代码是一个专门的汇编程序,我们有ST编译器的源代码,但是很旧,不适合我们的项目。我们没有关于编译器的任何文档,只有源代码和输出.4asm文件以及许多索引文件,我想尝试反向生成4asm文件。但是谢谢你的解释。