ZHCU947E June 2015 – January 2023
存储器范围原点和长度可以使用带有以下运算符的整数常量表达式:
二元运算符: | * / % + - << >> == = < <= > >= & | && || | |
一元运算符: | - ~ ! |
表达式根据标准 C 运算符优先级规则进行求值。
不会检查上溢和下溢,但会使用更大的整数类型来计算表达式。
可使用预处理指令 #define 常量代替整数常量。不能在存储器指令表达式中使用全局符号。
三个地址运算符从先前的存储器范围条目中引用存储器范围属性:
START(MR) | 返回先前定义的存储器范围 MR 的起始地址。 | |
SIZE(MR) | 返回先前定义的存储器范围 MR 的大小。 | |
END(MR) | 返回先前定义的存储器范围 MR 的结束地址。 |
/********************************************************/
/* 带有 MEMORY 指令的示例命令文件 */
/********************************************************/
file1.c.obj file2.c.obj /* 输入文件 */
--output_file=prog.out /* 选项 */
#define ORIGIN 0x00000000
#define BUFFER 0x00000200
#define CACHE 0x0001000
MEMORY
{
FAST_MEM (RX): origin = ORIGIN + CACHE length = 0x00001000 + BUFFER
SLOW_MEM (RW): origin = end(FAST_MEM) length = 0x00001800 - size(FAST_MEM)
EXT_MEM (RX): origin = 0x10000000 length = size(FAST_MEM) - CACHE