我正在编写代码生成器,但没有足够的资源来执行此操作。我只有拥有ST语言编译器的旧软件。 我试图做的是从编译器的输出,编写我的代码生成器,也许不是最好的方法,但是我能做的最好。
我的问题是,任何人都知道" .4asm"扩展以及如何编写代码生成器?
ps:一些输出代码:
.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
...
答案 0 :(得分:0)
那么你所拥有的是由ST语言的编译器生成的汇编语言源代码。 ST指的是:
PLC结构化文本语言,由IEC 1131-3 PLC语言规范(IEC,1993)定义。结构化文本(ST)是一种用于PLC的高级,块结构,基于文本的语言。它与Pascal类似,但从PLC应用程序中得出了许多重要的差异。 ST程序在PLC扫描中重复执行,并在固定的PLC存储器映射I / O基础上运行。大多数ST实现符合IEC 1131-3 ST规范24。有关ST一般特性的更多信息见附录A.
如果您在ST中有源代码程序,那么可以使用ST编译器对其进行编译。如果您有PLC,那么您应该拥有将生成的代码编译为它将接受的表单所需的工具。如果你没有这些东西,这将是一场艰苦的战斗。
如果此代码位于名为.4asm的文件中,那么这是汇编语言,可以编译到特定的PLC中。如果你知道什么是PLC,你就知道什么是编译器。
代码看起来像意大利摩托车。我认为你需要找到一个比这里常见的人更专业的知识。