2016-01-19 62 views
0

我將一個Perl代碼轉換爲tcl。已經完成了大部分工作,但是陷入了一些邏輯和數學表達式。尋求你的幫助:Tcl,Perl中的算術表達式

線路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 

感謝您的幫助

+0

函數有兩個參數 – user3565150

回答

2

您需要expr command的數學:

# my $value = read_phy($phy, 0) | (0x1 << 15); 
set value [expr {[phy_rd $phy 0] | (0x1 << 15)}] 
# my $value = (read_phy($phy, 23) & ~0x0700) | (0x00 << 8); 
set value [expr { ([phy_rd $phy 23] & ~0x0700) | (0x00 << 8)}] 
# $regvalue &= ~0x0C000 
set regvalue [expr {$regvalue & ~0x0C000}] 

請仔細閱讀Brace your expr-essions

+0

非常感謝格倫! – user3565150