gpt4 book ai didi

java - 为什么只为 *const_n JVM 指令定义了这样的常量范围?

转载 作者:行者123 更新时间:2023-11-29 04:14:59 26 4
gpt4 key购买 nike

根据 JVM specification , 有几条指令针对一组特定的常量进行了优化。谁能解释为什么只定义了这个范围的常量?

  • iconst_n:压入整数常量n,0≤n≤5
  • lconst_n:压入长常量n,0≤n≤1
  • fconst_n:推送浮点常量 n,0 ≤ n ≤ 2
  • dconst_n:压入双常数 n,0 ≤ n ≤ 1

我假设这是由于这些常量的使用频率,但是我找不到对我的想法的确认或任何其他关于它的信息。

最佳答案

Can anyone explain why only this range of constants is defined?

这在当时看来是个好主意。字节码基于旧的虚拟机实现,可能继承了这些约束。

I assume that this is due to the frequency of use of these constants,

我根据不同指令出现几年后的使用频率进行了一些研究,发现几乎没有证据表明可以通过经验方法来决定哪些指令是 1 字节还是 2 字节。话又说回来,在编写原始设计时,生成的字节码非常少。

关于java - 为什么只为 *const_n JVM 指令定义了这样的常量范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com