如何在wla-dx中创建与ROM条目大小一致的RAM区域?
解决WLA-65816中用ROM数据大小动态分配RAM的问题
直接使用.res指令替代结构体的workaround即可,这是WLA-DX中预留RAM空间的标准方式,支持直接引用_sizeof_data这类符号:
; 引入ROM中的二进制数据 data: .INCBIN "datafile.bin" ; 动态分配与data大小一致的RAM区域 .RAMSECTION "Work" SLOT 1 ORG $100 SEMIFREE work_data .res _sizeof_data .ENDS
为什么原方法报错?
你之前用instanceof array size的方式报错,是因为WLA-DX的.instanceof指令的size参数在语法解析阶段不支持引用ROM段生成的符号(比如_sizeof_data)。而.res指令是专门用于预留连续内存空间的原生指令,完全支持使用已定义的数值符号作为大小参数,刚好匹配你的需求。
若需保留结构体用法(可选)
如果因为代码架构需要保留结构体定义,也可以直接在结构体内部用.RES指定目标大小:
.STRUCT array buffer: db .RES _sizeof_data .ENDST .RAMSECTION "Work" SLOT 1 ORG $100 SEMIFREE work_data instanceof array .ENDS
内容的提问来源于stack exchange,提问作者amaurea
相关产品推荐
相关产品推荐

