Tcl,Perl中的算术表达式

时间:2016-01-19 13:16:09

标签: perl tcl

我正在将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  

感谢您的帮助

1 个答案:

答案 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}]

另请阅读Brace your expr-essions