Tcl、Perl 中的算术表达式

Arithmetic expressions in Tcl, Perl

我正在将 Perl 代码转换为 tcl。已经完成了其中的大部分内容,但仍停留在一些逻辑和数学表达式中。寻求您的帮助:

第 1 行:

my $value = read_phy($phy, 0) | (0x1 << 15);

第 2 行:(与上一条有点相似)

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  

感谢您的帮助

你需要 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