`
simpleman7210
  • 浏览: 18962 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

实现数组相关指令

阅读更多
版本v034实现了数组相关指令。最近的版本(v04)准备支持本地方法和小型的类库。
  • v04.rar (77.5 KB)
  • 下载次数: 22
分享到:
评论
6 楼 simpleman7210 2014-02-23  
不错,正如你看到的,new和delete被重载了,目的是尝试管理内存。至于你的new对象为什么size是0x40,我测试了一下,并不是这样。比如,v034版本上new一个Object的实例,大小是8个字节。
class TestNew {
private int _x;

public static void main(String[] args) {
main();
}

public static void main() {
Object o = new Object();
TestNew t = new TestNew();
}
}


在上面这个代码中,new一个TestNew对象,大小是12个字节。所以,new一个对象的大小,肯定跟一个类的定义与关。请看看你的类是怎么定义的。
5 楼 panqj_hust 2014-02-22  
我最近才发现虚拟机 实现了,类的operator new与operator delete的重载。

但是有个问题,是为什么像一个对象的new大小,在进入到

//申请一块内存,size为申请的字节数
void *MemoryManagerImpl::alloc(int size)
{
这里的时候,size总是0x40呢?

在vs2010的上的测试,是这样的。
4 楼 simpleman7210 2014-02-17  
你的代码很清楚了,因为Object的实例不能转换为int[],所以抛出ClassCastException,如果是如下代码:
   int[] o = new int [5];
   int[] ia = (int[])o;
则这样转换将没有问题。
3 楼 panqj_hust 2014-02-17  
public class Test
{
public static void main(String[] args) {
main();
}

public static void main() {
Object o = new Object();
int[] ia = (int[])o;
int x = ia.length;
}

}


感觉虚拟机是对的,我看了下代码,应该出现这个ClassCastException。

这个Test.java是在v04.rar里面的。
2 楼 simpleman7210 2014-02-15  
把你的test.java程序贴出来看看,如果我的程序没有问题,问题可能在你的程序,ClassCastException表明在对象上作了不兼容的转换。
1 楼 panqj_hust 2014-02-13  
v04.rar 测试test.class的时候,出现了

Program abort, exception: java/lang/ClassCastException

这是什么问题啊?

相关推荐

    基于S7-1200 PLC实现数组某一列上下循环移动的方法研究.pdf

    本研究探讨了如何利用S7-1200 PLC实现数组某一列上下循环移动的控制方法,分别采用梯形图和结构化控制语言两种编程语言来编写程序,并对这两种方法的编程思路和程序解释进行了介绍。 在工业自动控制系统中,数据...

    北邮计算机系统结构实验三-使用MIPS指令实现求两个数组的点积

    ### 北邮计算机系统结构实验三-使用MIPS指令实现求两个数组的点积 #### 实验背景与目的 在本实验中,我们利用MIPS指令集架构来编写程序,目的是实现两个数组的点积计算。该实验不仅帮助学生熟悉前两个实验的内容,...

    TIA博途中通过AT指令和二维数组实现IO点位映射的具体方法示例.docx

    在TIA博途中,通过AT指令和二维数组来实现IO点位映射是一种高效且灵活的方法,特别适用于处理大量输入/输出信号的场景。下面我们将详细探讨这个过程。 首先,AT指令(ASCII Terminal)通常在串行通信中使用,用于...

    TIA博途-使用AT指令实现IO点位映射到二维数组中-全局FB库文件-V17版本-GF-二维数组IO点位映射.zip

    在这个项目中,我们将聚焦于如何利用AT指令在TIA博途V17版本中实现IO点位映射到二维数组中,以及如何利用全局FB库文件来优化这一过程。 1. **TIA博途**: TIA博途是西门子自动化系统的核心组成部分,涵盖了从PLC编程...

    System.arraycopy实现数组之间的复制

    ### System.arraycopy实现数组之间的复制 在Java编程语言中,`System.arraycopy()`是一个非常实用且高效的方法,用于在数组之间复制元素。此方法属于`java.lang.System`类,并且是一个静态方法,这意味着可以直接...

    汇编-neon内嵌汇编实现数组相加.zip

    在本主题“汇编-NEON内嵌汇编实现数组相加”中,我们将深入探讨如何利用NEON指令集在汇编程序中高效地执行数组元素的加法运算。 NEON技术提供了高级SIMD(单指令多数据)功能,这使得在同一时钟周期内可以处理多个...

    基于js实现数组相邻元素上移下移

    总的来说,这段代码提供了一个完整的解决方案,可以在JavaScript环境中实现数组元素的上移和下移功能,这对于需要动态调整列表顺序的Web应用来说非常实用。需要注意的是,这个实现假设数组索引是从0开始的,因此在...

    计算机系统结构实验指导书及模拟器MIPS系列实验报告

    实验1:使用MIPS指令实现求两个数组的点积 在这一实验中,学生将学习如何用MIPS汇编语言编程,计算两个整数数组的点积。点积涉及到数组元素的逐个相乘再累加。通过这个实验,学生可以熟悉MIPS的算术运算指令,如`mul...

    计算机系统结构-指令系统

    向量数组数据表示则用于高效处理数组或矩阵操作,而堆栈数据表示则有助于实现递归算法和其他需要栈操作的程序。 在指令集系统结构的分类中,CISC(复杂指令集计算机)和RISC(精简指令集计算机)是两种主要的架构。...

    matlab数组计算

    MATLAB 提供了许多函数来实现数组运算,例如加法、减法、乘法、除法等。 数组化编程是 MATLAB 数组计算的重要概念。数组化编程是指使用数组作为基本数据结构来编程的方式。这种方式可以提高编程效率、简化代码、...

    易语言快速判断数组中的数值

    这通常通过循环实现,如`对于 指针变量 = 1 至 数组长度(数组名称) 只要... 结束对于`,这个循环会依次访问数组中的每个元素。 3. **比较元素**:在循环中,我们可以用`比较指令`(如`等于`、`不等于`等)来检查...

    TIA博途中数组Array【】的基本使用方法详解.docx

    - 实现将0-7这8个数送入数组下标为0-7的8个元素的功能。 - SCL程序示例: ```scl VAR ArrayExample : ARRAY [0..7] OF INT; i : INT; BEGIN FOR i := 0 TO 7 DO ArrayExample[i] := i; // 将i赋值给数组...

    将一个数组的所有元素排序后输出

    lea指令用于将数组的首地址传递给寄存器,mov指令用于将数据传递给寄存器,add指令用于将寄存器的值增加或减少,loop指令用于控制循环的次数。 我们的汇编语言程序使用冒泡排序算法对数组中的10个整型元素进行排序...

    易语言子程序返回多维数组

    要使子程序返回多维数组,首先需要在子程序声明中定义返回类型为数组,然后在子程序体中创建并填充数组,最后使用`返回`指令返回。以下是一个简单的示例: ``` . 返回多维数组(行数, 列数) . 创建数组 . 返回数组...

    C语言中数组指针在汇编语言寻址方式中的应用.pdf

    例如,可以使用数组指针来实现数组的寻址方式,或者使用指针来实现函数的调用。在汇编语言中,数组指针的使用可以使得程序更加简洁和高效。 C语言中数组指针在汇编语言寻址方式中的应用非常广泛。数组指针的使用...

    易语言test源码,易语言DLL返回数组的方法

    在DLL中,我们可以先创建一个动态数组,然后使用`内存分配`指令分配内存,再用`内存复制`指令填充数组元素,最后返回数组首地址。 下面是一个简单的示例,演示如何在DLL中定义一个返回数组的函数: ```易语言 ....

    微机原理实验二——循环程序结构和过程调用程序设计

    本次实验主要通过几个具体的编程任务来加深理解汇编语言中循环结构和过程调用的应用,掌握8086 CPU的基本指令系统,尤其是循环、分支结构以及子程序调用的相关指令。实验具体分为以下几个部分: 1. **两个数组之和*...

    c语言实现的_两个大小相同的数组对应值相加 结果赋给第三个数组

    ### C语言实现两个大小相同的数组对应值相加并赋给第三个数组 在C语言编程中,经常需要处理数组之间的各种运算。本篇文章将详细介绍如何使用C语言实现两个大小相同的数组对应值相加,并将结果赋给第三个数组的操作...

    MIPS指令实现冒泡排序法

    根据提供的文件信息,我们可以深入探讨MIPS指令集架构下的冒泡排序实现方法,并结合C++程序进行比较。首先,我们来解析MIPS汇编语言版本的冒泡排序代码。 ### MIPS汇编语言版本 #### 代码解读 MIPS汇编语言版本的...

    易语言源码易语言汇编读写数组源码.rar

    "易语言汇编读写数组源码"是一个专门针对数组操作的编程实例,它结合了易语言和汇编语言,以提高程序运行效率或实现某些特定功能。 在计算机科学中,数组是一种数据结构,它可以存储一组相同类型的数据。在易语言中...

Global site tag (gtag.js) - Google Analytics