gpt4 book ai didi

function - 在 VHDL 中创建++ 运算符

转载 作者:行者123 更新时间:2023-12-04 02:09:13 24 4
gpt4 key购买 nike

我想为 STD_LOGIC_VECTOR 类型使用一个新的 C++ 样式运算符。到目前为止,我设法创建并使用了以下函数:

FUNCTION PLUS_ONE ( a : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR is 
BEGIN
RETURN std_logic_vector( unsigned( a ) + 1);
END FUNCTION;

现在如果我创建这个:
FUNCTION "++" ( a : STD_LOGIC_VECTOR) RETURN      STD_LOGIC_VECTOR is 
BEGIN
RETURN std_logic_vector( unsigned( a ) + 1);
END FUNCTION;

ISE 抛出以下错误:
"++" is not a predefined operator.

现在的问题是,是否可以在 VHDL 中创建新的运算符,但我遗漏了一些东西

最佳答案

您只能在 VHDL 中重载运算符,不能创建新的运算符符号。报价the LRM (第 4.5.2 节):

The declaration of a function whose designator is an operator symbol is used to overload an operator. The sequence of characters of the operator symbol shall be one of the operators in the operator classes defined in 9.2.



手册的相应部分说:
condition_operator ::= ??
logical_operator ::= and | or | nand | nor | xor | xnor
relational_operator ::= = | /= | < | <= | > | >= | ?= | ?/= | ?< | ?<= | ?> | ?>=
shift_operator ::= sll | srl | sla | sra | rol | ror
adding_operator ::= + | – | &
sign ::= + | –
multiplying_operator ::= * | / | mod | rem
miscellaneous_operator ::= ** | abs | not

尽管我喜欢简洁,但我必须承认,选择速记运算符而不是编写表达式的标准方法是“语法糖”,并且有可能混淆代码。有趣的是,像 Python 和 Ruby 这样的“时尚”语言没有 ++运营商也是如此。

VHDL 能否支持 ++运算符(operator)?我目前正在研究 VHDL 解析器,我冒着说添加后缀 ++ 的风险。运算符会破坏语言语法的很多规则,特别是因为一元运算符希望在符号的右侧使用一个操作数。由于这一点以及支持这种改变的有力论据并不多,我预计不会很快看到它。考虑到所有因素,我个人的选择是坚持 value := value + 1对于标准数据类型。

关于function - 在 VHDL 中创建++ 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com