我正在尝试将Java转换为中间语言,并且正在弄清楚中间语言的工作方式。
我有原始的Java代码:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/Factorial.java
我有中间代码表示形式(VAPOR):http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/Factorial.vapor
这是另一组:在Java中:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/BubbleSort.java
在VAPOR中:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/BubbleSort.vapor
我的问题是,所有VAPOR代码都具有t.0 = HeapAllocZ(x)
(其中x
是int
)。我想知道转换器如何确定堆大小需要为x
大小。在Factorial.vapor
中,将其设置为4
。在BubbleSort.vapor
中,将其设置为12
。
谢谢!
最佳答案
看起来HeapAlloc
是基于要创建的结构的大小(假定4
和12
是字节值)。我认为查看数据结构使用的变量,并计算这些变量求和的字节数将为您分配数量。
关于java - 我们如何知道要设置多少堆?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13483773/