IL命令

部分CIL 操做碼數組

操做碼                                           做用spa

add, sub, mul, div, rem                   用於兩個數加減乘除求模對象

add, or, not, xor                            用於在兩個值上進行二進制操做索引

ceq, cgt, clt                                   用不一樣的方法比較兩個在棧上的值,ceq:是否相等;cgt:是否大約;clt:是否小於內存

box, unbox                                   在引用類型和值類型之間轉換rem

ret                                                退出方法和返回一個值字符串

beq, bgt, ble, blt, switch                 控制方法中的條件分支,beg:若是相等就停止到代碼標籤;bgt:若是大於就停止到代碼標籤;it

                                                   ble:若是小於等於就停止到代碼標籤;blt:若是小於就停止到代碼標籤;泛型

                                                   全部的分支控制操做碼都須要給出一個CIL代碼標籤做爲條件爲真的跳轉目的變量

br.s                                             (無條件)停止到代碼標籤

call                                               調用一個成員

nearer, newobj                              在內存中建立一個新的數組或新的對象類型

 

主要的入棧CIL操做碼  (ld 加載)

操做碼                                           做用

ldarg (及多個變化形式)                     加載方法的參數到棧中。除了泛型ldarg(須要一個索引做爲參數),還有後其餘不少的變化形式。

                                                   eg. 有個數字後綴的ldarg操做碼來指定須要加載的參數。同時還有不少ldarg的變化形式容許加載

                                                   指定的數據類型(ldarg_i4, 加載int32)和值(ldarg_i4_5 加載一個值爲5的int32)

ldc (及多個變化形式)                      加載一個常數到棧中

ldfld (及多個變化形式)                      加載一個對象實例的成員到棧中

ldloc (及多個變化形式)                      加載一個本地變量到棧中

ldobj                                            得到一個堆對象的全部數據,並將它們放置到棧中

ldstr                                             加載一個字符串數據到棧中

 

主要的彈出棧操做碼 (st 存儲)

操做碼                                           做用

pop                                              刪除當前棧頂的值,可是並不影響存儲的值

starg                                            存儲棧頂的值到給出方法的參數,根據索引肯定這個參數

stloc (及多個變化形式)                      彈出當前棧頂的值並存儲在一個本地變量列表中,根據因此肯定這個參數

stobj                                            從棧中複製一個特定的類型到指定的內存地址

stfld                                             用從棧中得到的值替換對象成員的值

相關文章
相關標籤/搜索