阿摩線上測驗 登入

申論題資訊

試卷:105年 - 105 專技高考_專利師(選試專業英文及計算機結構)、專利師(選試專業日文及計算機結構):計算機結構#55679
科目:計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)
年份:105年
排序:0

題組內容

一、一般用途處理器的指令集可以根據不同面向來作分類。常見的分類方式中有一種是 根據指令中可以使用的運算元數量,而有 0 個、1 個、2 個、3 個、4 個運算元的設 計方向。試回答下列問題:

申論題內容

⑴ Java 語言的 bytecode 在上述提及的分類方式中應屬多少個運算元的指令集?請具 體說明之,否則不予計分。(參考資料:Java bytecode 中原則上每道指令的長度 即為一個位元組。)(6 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

Java bytecode 指令集主要屬於單運算元指令集。這是因為大多數指令從操作數棧中隱式地取出操作數,進行運算並將結果壓回棧中。

Java 語言的 bytecode 指令集大部分屬於單運算元(one-address instruction set)。這是因為大多數 Java bytecode 指令包括操作碼(opcode)和操作數(operand),其中操作數通常是隱含在棧中或附加在指令之後。

具體說明

1. 單運算元指令(One-Operand Instructions)

在 Java bytecode 中,許多指令是隱式地從操作數棧(operand stack)中取出操作數,進行運算後再將結果放回棧中。這意味著這些指令在形式上只需要一個顯式操作數或無需顯式操作數。

例子

  • iadd(整數加法指令):從棧中彈出兩個整數,相加後將結果壓入棧中。該指令本身不需要顯式的操作數。
  • iload_0(載入局部變量到棧頂):這個指令隱式地指定變量索引。

這些指令操作數的隱含性使得 Java bytecode 指令集更接近於單運算元指令集。指令的主要操作數(如加法中的兩個整數)隱含在操作數棧中,而非顯式地作為指令的一部分。

2. 少量的零運算元指令(Zero-Operand Instructions)

有些指令不需要任何操作數,例如:

  • nop(無操作指令):不執行任何操作。
  • return(從方法返回):將控制權返回給調用者。

這些指令確實不需要任何操作數,但在大多數情況下,Java bytecode 指令集依然以單運算元方式工作。

3. 多運算元指令(Multiple-Operand Instructions)

雖然大多數指令屬於單運算元指令集,但也有少數指令需要多個操作數。例如:

  • iinc(增量指令):該指令需要兩個操作數,分別是局部變量的索引和增量值。