我正在尝试编写一个DAC macro
将位列表的名称及其大小以及整数变量的名称作为输入。列表中的每个元素都应该被限制为等于变量中的每个位(都具有相同的长度),即(对于列表名称list_of_bits
和变量名称foo
,它们的长度是4
)宏的输出应该是:
keep list_of_bits[0] == foo[0:0];
keep list_of_bits[1] == foo[1:1];
keep list_of_bits[2] == foo[2:2];
keep list_of_bits[3] == foo[3:3];
我的宏代码是:
define <keep_all_bits'exp> "keep_all_bits <list_size'exp> <num'name> <list_name'name>" as computed {
for i from 0 to (<list_size'exp> - 1) do {
result = appendf("%s keep %s[%d] == %s[%d:%d];",result, <list_name'name>, index, <num'name>, index, index);
};
};
我得到的错误:
*** Error: The type of '<list_size'exp>' is 'string', while expecting a
numeric type
...
for i from 0 to (<list_size'exp> - 1) do {
为什么它解释<list_size'exp>
as 字符串?谢谢您的帮助