我正在将Perl代码转换为tcl。完成了大部分工作,但坚持使用一些逻辑和数学表达式。寻求你的帮助:
线路1:
my $value = read_phy($phy, 0) | (0x1 << 15);
Line2 :(有点类似于前一个)
my $value = (read_phy($phy, 23) & ~0x0700) | (0x00 << 8);
对于第1行,经过多次试验后,我想在两个语句中打破逻辑,但仍无法清除编译:
set temp_value [phy_rd $devno 0]
set value [$temp_value | (0x1 << 15)]
第3行:
$regvalue &= ~0x0C000
感谢您的帮助
答案 0 :(得分:2)
您需要expr
command数学:
1
# my $value = read_phy($phy, 0) | (0x1 << 15);
set value [expr {[phy_rd $phy 0] | (0x1 << 15)}]
2
# my $value = (read_phy($phy, 23) & ~0x0700) | (0x00 << 8);
set value [expr { ([phy_rd $phy 23] & ~0x0700) | (0x00 << 8)}]
3
# $regvalue &= ~0x0C000
set regvalue [expr {$regvalue & ~0x0C000}]