gcj/10


gcj

10. 配列

配列の確保

A.java

public class A {
	public static void main() {
		int[] a = new int[] { 1, 2, 3, 4 };
		int b = a.length;
	}
}

未定義参照

A.s

javalang.cc(追加)

extern "C" void* _Jv_NewPrimArray(void* type, int length) {
	int size = sizeof(int);
	int* result = malloc(3 * sizeof(int) + length * size);
	*(result + 2) = length;
	return retsult;
}

配列へのアクセス

A.java

public class A {
	public static void main() {
		int[] a = new int[4];
		a[2] = 3;
	}
}

未定義参照

A.s

javalang.cc(追加)

extern "C" void _Jv_ThrowBadArrayIndex(int index) {
	printf("BadArrayIndexException: %d\n", index);
	*(int*)NULL = 0;
}

テスト

A.java

public class A {
	public static void main() {
		int[] a = new int[] { 5, 3, 1, 6 };
		for (int i = 0; i <= a.length; i++) {
			System.out.println(a[i]);
		}
	}
}

実行結果

$ ./test
5
3
1
6
BadArrayIndexException: 4
Segmentation fault (core dumped)

ここまでの作業結果: file10.zip

Monaで実行

a.lengthがうまく取れていないようだ。

public class A {
    public static void main() {
        int[] a = new int[] { 5, 3, 1, 6 };
        System.out.println("Hello,World!");
        System.out.print("a.length=");
        System.out.println(a.length);
        for (int i = 0; i <= 4; i++) {
            System.out.println(a[i]);
        }
    }
}
gcj.gif

コメント

コメントはありません。 コメント/gcj/10?

お名前:

MENU

now: 7

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3413, today: 1, yesterday: 0

添付ファイル: filejavalang.cc 986件 [詳細] fileObject.h 1079件 [詳細] filegcj.gif 544件 [詳細] filegcj.zip 771件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:00 (3762d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.053 sec.