亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

istore 指令是否從 main 方法中的索引 1 開始?

istore 指令是否從 main 方法中的索引 1 開始?

MMTTMM 2023-11-01 16:36:08
鑒于指令istore_<n>及其文檔:n 必須是當前幀的局部變量數組的索引(第 2.6 節)。它沒有指定它從哪個索引開始。我假設為 0。對于給定的 istore 操作,它應該增加 1。給定一個簡單的類:public class TestingStuff {    public static void main(String[] args) {        int a = 11;        int b = 12;    }    public static void test() {        int c = 13;        int d = 14;    }}我希望這兩種方法有不同的框架。a那么這應該意味著存儲和的指令b將是istore_0和istore_1。c以及用于存儲和 的相同索引d。但由于某種原因,main方法中的索引從 開始1。這似乎總是如此。但我找不到任何有關原因的信息。javap 的輸出:  public static void main(java.lang.String[]);    descriptor: ([Ljava/lang/String;)V    flags: ACC_PUBLIC, ACC_STATIC    Code:      stack=1, locals=3, args_size=1         0: bipush        11         2: istore_1         3: bipush        12         5: istore_2         6: return  public static void test();    descriptor: ()V    flags: ACC_PUBLIC, ACC_STATIC    Code:      stack=1, locals=2, args_size=0         0: bipush        13         2: istore_0         3: bipush        14         5: istore_1         6: return是這樣嗎?如果是這樣,為什么?
查看完整描述

1 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

靜態方法的參數作為從位置 0 開始的局部變量傳入。因此,對于,數組位于位置 0 的局部變量中。編譯執行某些操作的代碼應該可以證明這一點,盡管我沒有編譯器便利。mainargsargs

(對于實例方法,this位于位置 0,然后其余參數從位置 1 開始。)

查看完整回答
反對 回復 2023-11-01
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號