head	1.4;
access;
symbols
	bg2_23:1.4
	bg2_22:1.4
	bg2_21:1.4
	bg2_20:1.4
	bg2_16:1.4
	bg2_15:1.4
	bg2_12:1.4
	bg2_07:1.4
	isorc2008_submission:1.3
	handbook_alpha_edition:1.3
	jtres2007_submission:1.3
	bg1_07:1.3
	bg1_06:1.3
	bg1_05:1.3
	TAL_101:1.3
	TAL_100:1.3
	jtres_submission:1.3;
locks; strict;
comment	@# @;


1.4
date	2008.02.24.19.55.00;	author martin;	state Exp;
branches;
next	1.3;
commitid	5aac47c1cb8c4567;

1.3
date	2006.06.22.22.16.49;	author martin;	state Exp;
branches;
next	1.2;
commitid	12db449b16d04567;

1.2
date	2006.06.18.11.54.36;	author martin;	state Exp;
branches;
next	1.1;
commitid	22b44953ef94567;

1.1
date	2006.06.17.23.54.04;	author martin;	state Exp;
branches;
next	;
commitid	7ae84494961b4567;


desc
@@


1.4
log
@JOP goes GPL
@
text
@/*
  This file is part of JOP, the Java Optimized Processor
    see <http://www.jopdesign.com/>

  Copyright (C) 2001-2008, Martin Schoeberl (martin@@jopdesign.com)

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package wcet;

import com.jopdesign.sys.*;

public class SimpleMethod2 {

	static int ts, te, to;

	/**
	 * @@param args
	 */
	public static void main(String[] args) {
		
		ts = Native.rdMem(Const.IO_CNT);
		te = Native.rdMem(Const.IO_CNT);
		to = te-ts;
		// measurement + return takes 22+22+21=65 cycles
		// WCET measured: 211
		// WCET analysed: 278-65 = 213
		// diff is 2 cycles:
		//	    As the invokestatic of the native methods get substituted
		//	    by the special bytecode, the method length gets shorter (1 byte
		//	    for the special bytecode instead of 3 bytes for the
		//	    invokestatic). Therefore, foo() is now 5 words instead of the
		//	    original 6 words. That means the miss from the xxx() return is 2
		//	    cycles less then in the original, analyzed method.
		measure();
//		System.out.println(te-ts-to);
	}
	
	public static void measure() {
		ts = Native.rdMem(Const.IO_CNT);
		foo();
		te = Native.rdMem(Const.IO_CNT);		
	}
	
	static int foo() {
		xxx();
		return 123;
	}
	static int xxx() {
		return 456;
	}
	
}
@


1.3
log
@no message
@
text
@d1 20
@


1.2
log
@no message
@
text
@d19 8
a26 5
		// WCET analysed: 289-65 = 224
		// diff is 13 cycles:
		//	10 from wrong invoke foo 85 instead of 75
		//  2 from wrong invoke xxx 77 instead of 75
		//	1 ???
d31 1
a31 1
	static void measure() {
@


1.1
log
@no message
@
text
@d18 6
a23 2
		// WCET measured: 213
		// WCET analysed: 294
a34 1
		int i=0;		// WCETA has problems
@

