org.ibex.nestedvm.Compiler.class Maven / Gradle / Ivy
???? /?
_`ab
c
d e fgh
d i j k lm no p qrs
tuvw xy
z
{|
?}
~
t?
q??
??
???????
*d??
-d?
/??
1d
1??
/????? q?
9??
<d?
>??
?
??
?
??
??
?
??
???
c
z? ? ? ? ? ? ? ? ?? ?? ? ??
]? ? ]? ????
bd ??? ]? ??? ???
kd ? @ ???
?
?
]???
F? ?? ???
}z ?? ??
?? ??
}??
]??
? ]? ?? ????????
??
?? ??
?
? ??
??? ?????
? F? +? +??
??
? ??????
?? ????
d
?
?
?
?
?
?
?
?
?
?
? ?
!" ?#$
?%&'
?d(
?) *
?+
?,-
?./
?z
?0123456789:;< =!>$?%@'A"B#CDEF Option InnerClasses Exn elf Lorg/ibex/nestedvm/util/ELF;
fullClassName Ljava/lang/String; source fastMem Z maxInsnPerMethod I maxBytesPerMethod
methodMask methodShift
pruneCases assumeTailCalls
debugCompiler
printStats runtimeStats supportCall nullPointerCheck runtimeClass hashClass unixRuntime
lessConstants singleFloat pageSize
totalPages pageShift onePage jumpableAddresses Ljava/util/Hashtable; userInfoG Symbol #Lorg/ibex/nestedvm/util/ELF$Symbol; gp used options [Ljava/lang/String; class$org$ibex$nestedvm$Compiler Ljava/lang/Class; Synthetic class$java$lang$String setSource (Ljava/lang/String;)V Code LineNumberTable maxInsnPerMethodInit ()V
Exceptions pageSizeInit usage main ([Ljava/lang/String;)V 6(Lorg/ibex/nestedvm/util/Seekable;Ljava/lang/String;)V _go go findBranchesInSymtabH Symtab ;(Lorg/ibex/nestedvm/util/ELF$Symtab;Ljava/util/Hashtable;)V findBranchesInText 3(ILjava/io/DataInputStream;ILjava/util/Hashtable;)V findBranchesInData 4(Ljava/io/DataInputStream;ILjava/util/Hashtable;II)V toHex (I)Ljava/lang/String; toHex8 toOctal3 getOption 7(Ljava/lang/String;)Lorg/ibex/nestedvm/Compiler$Option; parseOptions parseInt '(Ljava/lang/String;)Ljava/lang/Integer;
wrapAndIndent )(Ljava/lang/String;III)Ljava/lang/String; dateTime ()Ljava/lang/String; class$ %(Ljava/lang/String;)Ljava/lang/Class;
SourceFile
Compiler.javaIJ[ java/lang/ClassNotFoundException java/lang/NoClassDefFoundErrorKYA7 org/ibex/nestedvm/Compiler$Exn 'maxBytesPerMethod is not a power of two$ pageSize not a multiple of two% totalPages not a multiple of two&LMN aUsage: java Compiler [-outfile output.java] [-o options] [-dumpoptions] OP7 B-o takes mount(8) like options and can be specified multiple times Available options:01 java/lang/StringBufferA;QR : STVWUYV7WX -outfileYZ>; -d
-outformat -o , -dumpoptions[ $org/ibex/nestedvm/util/Seekable$File File class java/io/FileOutputStream #org/ibex/nestedvm/ClassFileCompilerA\ java/io/File]^ $ doesn't exist or is not a directoryA_ @Refusing to write a classfile to stdout - use -outfile foo.class
javasource java java/io/OutputStreamWriter`NAa java/io/FileWriter $org/ibex/nestedvm/JavaSourceCompilerAb Unknown output format: S767
== Options ==QRcdQe == End Options ==D;fg;h Compiler Error: unknown.mips.binary org.ibex.nestedvm.Runtime java.util.Hashtable org/ibex/nestedvm/util/ELFAi
jlmno java/io/IOException Binary is not an executablepo )Binary is not for the MIPS I Architectureqstuv Binary is not big endian/ java/lang/RuntimeException -Compiler instances are good for one shot only' =fastMem must be enabled for nullPointerCheck to be of any use 4fastMem must be enabled for onePage to be of any use &totalPages == 1 and onePage is not set:;=;wx (Binary has no symtab (did you strip it?) user_infoyz*- _gp.- )no _gp symbol (did you strip the binary?) java/util/Hashtable() java/lang/Integer{AX|}~ .text?? No .text segmentEH????? .data .sdata .rodata .ctors .dtors java/io/DataInputStream??A??KLIJ! org.ibex.nestedvm.?? org.ibex.nestedvm.UnixRuntime? .bss .sbss Unknown section: C;??nv Found Q? - additional possible branch targets in Symtab?T 3 additional possible branch targets in Text segment 3 additional possible branch targets in Data segment 0x?U?Q? java/lang/StringA??Y !org/ibex/nestedvm/Compiler$OptionA? java/lang/NoSuchFieldException java/util/StringTokenizerA??^?Y =?????N no false true WARNING: No such option: ??53 java.lang.StringZ[???3TU java/lang/NumberFormatException WARNING: is not an integer java/lang/Boolean yesA? java/lang/Error Unknown type: m?? kT?T? ?^ java/util/Date FEnable fast memory access - RuntimeExceptions will be thrown on faults nEnables checking at runtime for null pointer accessses (slows things down a bit, only applicable with fastMem) QMaximum number of MIPS instructions per java method (128 is optimal with Hotspot) QRemove unnecessary case 0xAABCCDD blocks from methods - may break some weird code #Assume the JIT optimizes tail calls optimizedMemcpy 6Use an optimized java version of memcpy where possible qOutput information in the generated code for debugging the compiler - will slow down generated code significantly 3Output some useful statistics about the compilation lKeep track of some statistics at runtime in the generated code - will slow down generated code significantly cKeep a stripped down version of the symbol table in the generated code to support the call() method aFull classname of the Runtime class (default: Runtime) - use this is you put Runtime in a package dFull classname of a Hashtable class (default: java.util.HashMap) - this must support get() and put() >Use the UnixRuntime (has support for fork, wai, du, pipe, etc) &The page size (must be a power of two) OTotal number of pages (total mem = pageSize*totalPages, must be a power of two) +One page hack (FIXME: document this better) EUse less constants at the cost of speed (FIXME: document this better) -Support single precision (32-bit) FP ops only org/ibex/nestedvm/Compiler java/lang/Object org/ibex/nestedvm/Registers !org/ibex/nestedvm/util/ELF$Symbol !org/ibex/nestedvm/util/ELF$Symtab java/lang/Class forName
getMessage java/lang/System err Ljava/io/PrintStream; java/io/PrintStream println append ,(Ljava/lang/String;)Ljava/lang/StringBuffer; length ()I toString print exit (I)V equals (Ljava/lang/Object;)Z org/ibex/nestedvm/util/Seekable L(Lorg/ibex/nestedvm/util/Seekable;Ljava/lang/String;Ljava/io/OutputStream;)V isDirectory ()Z D(Lorg/ibex/nestedvm/util/Seekable;Ljava/lang/String;Ljava/io/File;)V out (Ljava/io/OutputStream;)V F(Lorg/ibex/nestedvm/util/Seekable;Ljava/lang/String;Ljava/io/Writer;)V get ()Ljava/lang/Object; ,(Ljava/lang/Object;)Ljava/lang/StringBuffer; java/io/Writer close java/io/OutputStream $(Lorg/ibex/nestedvm/util/Seekable;)V header ELFHeader &Lorg/ibex/nestedvm/util/ELF$ELFHeader; $org/ibex/nestedvm/util/ELF$ELFHeader type S machine ident ELFIdent %Lorg/ibex/nestedvm/util/ELF$ELFIdent; #org/ibex/nestedvm/util/ELF$ELFIdent data B getSymtab %()Lorg/ibex/nestedvm/util/ELF$Symtab; getGlobalSymbol 7(Ljava/lang/String;)Lorg/ibex/nestedvm/util/ELF$Symbol; entry TRUE Ljava/lang/Boolean; put 8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; sectionWithName SHeader 8(Ljava/lang/String;)Lorg/ibex/nestedvm/util/ELF$SHeader; sheaders %[Lorg/ibex/nestedvm/util/ELF$SHeader; "org/ibex/nestedvm/util/ELF$SHeader name addr getInputStream ()Ljava/io/InputStream; (Ljava/io/InputStream;)V size
startsWith (Ljava/lang/String;)Z flags symbols $[Lorg/ibex/nestedvm/util/ELF$Symbol; (I)Ljava/lang/StringBuffer; readInt java/lang/Long (JI)Ljava/lang/String; (C)Ljava/lang/StringBuffer; ([C)V toLowerCase 1(Lorg/ibex/nestedvm/Compiler;Ljava/lang/String;)V '(Ljava/lang/String;Ljava/lang/String;)V hasMoreElements nextToken indexOf (Ljava/lang/String;)I substring (II)Ljava/lang/String; getType ()Ljava/lang/Class; set (Ljava/lang/Object;)V TYPE (Z)V endsWith (Ljava/lang/String;I)I
hasMoreTokens!
! " # $ % & ' () *- .- /
01 23 4 53 4 67 8 *+? ? 9 :; 8 q I*? *? d~?
? Y ?
?**? h? **? d?? *? *?
|? *Y?
`?
??? 9 * + " , . - H .<