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