BicaVM/types.js

94 lines
2.9 KiB
JavaScript
Raw Normal View History

2011-07-15 02:50:47 +01:00
/* -*- Mode: Javascript -*-
* -*- coding: UTF-8 -*-
* Copyright (C) 2011 by Artur Ventura
*
* File: types.js
* Time-stamp: Fri Jul 15 02:46:27 2011
*
* Author: Artur Ventura
*
*/
2011-07-18 00:56:41 +01:00
#ifndef _TYPES_JS_
#define _TYPES_JS_
2011-07-15 02:50:47 +01:00
// Local Variables Types
2011-07-17 18:42:58 +01:00
#define LOC_VAR_boolean 0x001;
#define LOC_VAR_byte 0x002;
#define LOC_VAR_char 0x004;
#define LOC_VAR_short 0x008;
#define LOC_VAR_int 0x010;
#define LOC_VAR_float 0x020;
#define LOC_VAR_reference 0x040;
#define LOC_VAR_returnAddress 0x080;
#define LOC_VAR_long 0x100;
#define LOC_VAR_double 0x200;
// Reference Types
2011-07-17 18:42:58 +01:00
#define REF_TYPE_class 0x1
#define REF_TYPE_interface 0x2
#define REF_TYPE_array 0x4
2011-07-17 18:42:58 +01:00
//primitive max Max values
#define CHAR_MAX_VALUE 0x0000
#define CHAR_MIN_VALUE 0xFFFF
#define BYTE_MAX_VALUE 127
#define BYTE_MIN_VALUE -128
#define BYTE_USIZE 128
#define SHORT_MAX_VALUE 32767
#define SHORT_MIN_VALUE -32768
#define SHORT_USIZE 32768
#define INT_MAX_VALUE 2147483647
#define INT_MIN_VALUE -2147483648
#define INT_USIZE 2147483648
#define LONG_MAX_VALUE 9223372036854776000
#define LONG_MIN_VALUE -9223372036854776000
#define LONG_USIZE 9223372036854776000
#define FLOAT_MAX_VALUE (2-Math.pow(2,-23))*Math.pow(2,127)
#define FLOAT_MIN_VALUE (2-Math.pow(2,-149))
#define DOUBLE_MAX_VALUE (2-Math.pow(2,-52))*Math.pow(2,1023)
#define DOUBLE_MIN_VALUE Math.pow(2,-1074)
#define NULL null
#define CHAR_OVERFLOW(value) ((value % (2*CHAR_MIN_VALUE)) - (CHAR_MIN_VALUE))
#define BYTE_OVERFLOW(value) ((value % (2*BYTE_USIZE)) - (BYTE_USIZE))
#define SHORT_OVERFLOW(value) ((value % (2*SHORT_USIZE)) - (SHORT_USIZE))
#define INT_OVERFLOW(value) ((value % (2*INT_USIZE)) - (INT_USIZE))
#define LONG_OVERFLOW(value) ((value % (2*LONG_USIZE)) - (LONG_USIZE))
#define POSITIVE_INF Number.POSITIVE_INFINITY
#define NEGATIVE_INF Number.NEGATIVE_INFINITY
#define IS_OVERFLOW(value,mark) (value > mark)
#define IS_UNDERFLOW(value,mark) (value < mark)
#define ADD(value1,value2) (value1)+(value2)
#define AND(value1,value2) (value1)&(value2)
#define DIV(value1,value2) (value1)/(value2)
#define MUL(value1,value2) (value1)*(value2)
#define NEG(value1) -(value1)
#define OR(value1,value2) (value1)|(value2)
#define REM(value1,value2) (value1)%(value2)
#define SHL(value1,value2) (value1)<<(0x001f&(value2))
#define SHR(value1,value2) (value1)>>(0x001f&(value2))
#define SUB(value1,value2) ((value1)-(value2))
#define USHR(value1,value2) ((value1)>0?(value1)>>s:((value1)>>s) + (2<<~s))
#define XOR(value1,value2) ((value1)^(value2))
function getRefClass(ref){
if (ref.type == REF_TYPE_array){
return getArrayClass();
}else{
return ref.classRef;
}
}
2011-07-18 00:56:41 +01:00
#endif //_TYPES_JS_
2011-07-17 18:42:58 +01:00