class program
}class myclass
}
例項字段每次建立型別例項的時候都會進行建立,它們屬於這個型別的例項,而靜態欄位由型別的所有例項共享,並且它會在型別載入時建立。某些靜態字段(文字欄位和對映字段)從不分配。引導程式只需要記錄要對映的字段的位置,並在字段定址時定址這些位置。高階別的編譯器(il assembler不執行此操作,將其會留給我們開發人員)把例項欄位和三種靜態欄位中的兩種靜態字段(非文字靜態字段)的型別,很容易從欄位標記中識別出引用欄位的型別。
當在il中找到標記時,jit編譯器不必深入元資料檢索並檢查欄位的標誌。此時所有il有兩組用於字段載入和儲存指令。例項欄位的指令為ldfld,ldflda和stfld;靜態欄位的指令是ldsfld,ldsflda和stsfld。嘗試將靜態字段指令與stance欄位一起使用會導致jit編譯失敗。逆向組合是可行的,但是它需要將例項指標載入到堆疊上,這當然對於靜態欄位是完全多餘的。對靜態字段使用例項字段指令的好處是,它允許以相同的方式訪問靜態欄位和例項字段。
callvirt物件呼叫後期繫結方法,並且將返回值推送到計算堆疊上。
.field private static literal string str = "hello" //靜態公共欄位的定義
.method private hidebysig static void
main(
string args
) cil managed
// end of method program::main
.method public hidebysig specialname rtspecialname instance void
.ctor() cil managed
// end of method program::.ctor
class program
}public class myclass
public void say()
}
.class public auto ansi beforefieldinit
extends [system.runtime]system.object
// end of method myclass::get_name
.method public hidebysig specialname instance void
set_name(
string 'value'
) cil managed
// end of method myclass::set_name
.method public hidebysig instance void
say() cil managed
// end of method myclass::say
.method public hidebysig specialname rtspecialname instance void
.ctor() cil managed
// end of method myclass::.ctor
.property instance string name()
// end of property myclass::name
.method private hidebysig static void
main(
string args
) cil managed
// end of method program::main
串列埠通訊系列二 通過txt檔案讀取串列埠引數
從txt檔案中串列埠讀取引數 建立txt檔案,並寫入預設引數 讀取txt檔案 根據txt檔案裡的內容設定串列埠引數 filestream 對檔案系統上的檔案進行讀取 寫入 開啟和關閉操作 streamwriter 流寫入 streamreader 流讀取 list集合 using system us...
(二)通過虛擬驅動vivi分析攝像頭驅動
一 通過指令 strace o xawtv.log xawtv 得到以下呼叫資訊 1 7都是在v4l2 open裡呼叫 open ioctl 4,vidioc querycap 3 7 都是在get device capabilities裡呼叫 3.for ioctl 4,vidioc enumin...
08 資料檔案恢復之二通過RMAN恢復
sqlplus在歸檔全的情況下,能搞定一部份的資料檔案的恢復,但真正要做備份恢復,rman才是專業的。下面列了一些資料檔案損壞情況下的恢復做法.1.表空間的資料檔案損壞,但存放盤沒壞。2.表空間單個資料檔案所在存放盤壞。3.close狀態下,所有表空間資料檔案存放盤都壞了。4.在資料庫open狀態下...