扩充内置功能块为 8 个:TON/TOF/TP/CTU/CTD/CTUD/R_TRIG/F_TRIG。
- isa:CAL_* 操作码连续占 24..31(CALL/RET 后移为 32/33,kOpCount=34);disasm 支持 5 个新操作码 - 词法/语法/链接:新 8 个关键字与冻结布局(TP=in/pt/q/et、CTD=cd/ld/pv/q/cv、 CTUD=cu/cd/r/lu/pv/qu/qd/cv、R_TRIG/F_TRIG=clk/q) - VM:do_cal 全 8 个语义(TP 脉冲、CTD 递减、CTUD 双向+装载、R_TRIG 上升沿、F_TRIG 下降沿); edge_prev_ 每槽 2 字节存边沿上次输入;exec_one 分发补 5 个新操作码 - 验证:TP 30ms 脉冲 2 周期、CTD 装载+递减到 q=1、CTUD cu/cd 双向、R/F_TRIG 交替; ctest 11/11 全绿 - 文档:指令与映像/词法/初步计划/符号表与链接/指令执行/扫描周期/使用说明 同步
This commit is contained in:
@@ -54,9 +54,13 @@ static bool test_sat() {
|
||||
static bool test_op() {
|
||||
using namespace isa;
|
||||
CHECK(static_cast<int>(Op::MOVE) == 0);
|
||||
CHECK(static_cast<int>(Op::RET) == 28);
|
||||
CHECK(kOpCount == 29);
|
||||
CHECK(std::strcmp(mnemonic(Op::CAL_CTU), "CAL_CTU") == 0);
|
||||
CHECK(static_cast<int>(Op::CAL_TON) == 24);
|
||||
CHECK(static_cast<int>(Op::CAL_F_TRIG) == 31); // 8 个 CAL_* 连续 24..31
|
||||
CHECK(static_cast<int>(Op::CALL) == 32);
|
||||
CHECK(static_cast<int>(Op::RET) == 33);
|
||||
CHECK(kOpCount == 34);
|
||||
CHECK(std::strcmp(mnemonic(Op::CAL_CTUD), "CAL_CTUD") == 0);
|
||||
CHECK(std::strcmp(mnemonic(Op::CAL_F_TRIG), "CAL_F_TRIG") == 0);
|
||||
CHECK(std::strcmp(mnemonic(static_cast<Op>(255)), "???") == 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user