diff --git a/App/lib/core/Gen/Call/CallGenCBuiltin.vp b/App/lib/core/Gen/Call/CallGenCBuiltin.vp index c547295..f0f6d71 100644 --- a/App/lib/core/Gen/Call/CallGenCBuiltin.vp +++ b/App/lib/core/Gen/Call/CallGenCBuiltin.vp @@ -1418,7 +1418,10 @@ novirtual class CallGenCBuiltin(CallGenBase.CallGenBase): # ============================================================ # 6. 构建参数列表文本(仅输入操作数) # ============================================================ - args_buf: str = pool.alloc(ASM_ARGS_BUF_SIZE) + # 每个实参 = 类型文本(MLIR 内联具名结构体完整字段体,可达 512 字节) + # + 值名;固定 ASM_ARGS_BUF_SIZE(512) 只够一个短类型,须按操作数个数给足。 + asm_arg_cap: sizet = sizet(operand_count + 1) * 544 + 64 + args_buf: str = pool.alloc(asm_arg_cap) if args_buf is None: return None args_buf[0] = '\0' diff --git a/App/lib/core/Gen/TranslatorGenMixin.vp b/App/lib/core/Gen/TranslatorGenMixin.vp index e729ca1..cb57200 100644 --- a/App/lib/core/Gen/TranslatorGenMixin.vp +++ b/App/lib/core/Gen/TranslatorGenMixin.vp @@ -242,7 +242,7 @@ novirtual class TranslatorGenMixin: pass if is_nested_arr != 0: cnt_total_n: sizet = sizet(arr_count) - buf_size_n: sizet = 128 + cnt_total_n * 192 + buf_size_n: sizet = 128 + cnt_total_n * 768 buf_n: str = pool.alloc(buf_size_n) if buf_n is None: return None