Commit Graph

24 Commits

Author SHA1 Message Date
Minero Aoki e6b6f20d24 r4966@macbookpro: aamine | 2009-05-26 11:59:25 +0900
* net/loveruby/cflat/compiler/Options.java: allow --verbose-asm too.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4254 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-26 04:24:41 +00:00
Minero Aoki c30f91a58a r4964@macbookpro: aamine | 2009-05-26 11:50:29 +0900
* net/loveruby/cflat/compiler/Options.java: --verbose-asm -> -fverbose-asm
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4253 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-26 02:52:20 +00:00
Minero Aoki 9ebdc8c35a r4852@macbookpro: aamine | 2009-05-17 16:19:18 +0900
* net/loveruby/cflat/compiler/Options.java: cbc --dump-* did not work.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4216 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 07:38:57 +00:00
Minero Aoki 189c089088 r4839@macbookpro: aamine | 2009-05-13 03:24:14 +0900
* compiler/Compiler.java: grand refactoring.
 * compiler/Options.java: refactoring: avoid ping-pong call with SourceFile.
 * compiler/SourceFile.java: ditto.
 * ast/AST.java: does not contain a TypeTable.
 * compiler/IRGenerator.java
 * compiler/TypeResolver.java
 * compiler/TypeChecker.java
 * sysdep/Linker.java: change arg order.
 * sysdep/GNULinker.java: ditto.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4210 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-12 18:24:47 +00:00
Minero Aoki 9c8af78a97 r4838@macbookpro: aamine | 2009-05-13 01:23:44 +0900
* net/loveruby/cflat/utils/CommandUtils.java: accept a list of string instead of CommandArg.
 * net/loveruby/cflat/sysdep/Linker.java: ditto.
 * net/loveruby/cflat/sysdep/LinkerOptions.java: ditto.
 * net/loveruby/cflat/sysdep/GNULinker.java: ditto.
 * net/loveruby/cflat/sysdep/AssemblerOptions.java: ditto.
 * net/loveruby/cflat/sysdep/GNUAssembler.java: ditto.
 * net/loveruby/cflat/utils/CommandArgStr.java -> compiler/LdOption.java
 * net/loveruby/cflat/utils/CommandArg.java -> compiler/LdArg.java
 * net/loveruby/cflat/compiler/SourceFile.java: CommandArg -> LdArg.
 * net/loveruby/cflat/compiler/Compiler.java: ditto.
 * net/loveruby/cflat/compiler/Options.java: ditto.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4209 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-12 18:24:46 +00:00
Minero Aoki c26eb88f2e r4834@macbookpro: aamine | 2009-05-11 03:17:05 +0900
* net/loveruby/cflat/compiler/Compiler.java: objectify assembler.
 * net/loveruby/cflat/compiler/Compiler.java: objectify linker.
 * net/loveruby/cflat/compiler/Options.java: provide #assembler, #asOptions, #linker, #ldOptions.
 * net/loveruby/cflat/sysdep/x86/X86Linux.java -> sysdep/X86Linux.java
 * net/loveruby/cflat/sysdep/Platform.java: provide #assembler, #linker.
 * net/loveruby/cflat/sysdep/X86Linux.java: ditto.
 * net/loveruby/cflat/sysdep/Assembler.java: new interface.
 * net/loveruby/cflat/sysdep/AssemblerOptions.java: new class.
 * net/loveruby/cflat/sysdep/GNUAssembler.java: new Assembler implementation.
 * net/loveruby/cflat/sysdep/Linker.java: new interface.
 * net/loveruby/cflat/sysdep/LinkerOptions.java: new clas.
 * net/loveruby/cflat/sysdep/GNULinker.java: new Linker implementation.
 * net/loveruby/cflat/utils/CommandUtils.java: new class.
 * net/loveruby/cflat/compiler/LdArg.java -> utils/CommandArg.java
 * net/loveruby/cflat/compiler/LdOption.java -> utils/CommandArgStr.java
 * net/loveruby/cflat/compiler/SourceFile.java: implements CommandArg.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4207 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 18:18:52 +00:00
Minero Aoki 21f7253fc9 r4827@macbookpro: aamine | 2009-05-11 01:47:38 +0900
* net/loveruby/cflat/codegenerator/CodeGenerator.java -> net/loveruby/cflat/sysdep
 * net/loveruby/cflat/codegenerator/CodeGeneratorOptions.java -> net/loveruby/cflat/sysdep
 * net/loveruby/cflat/sysdep/Platform.java: ditto.
 * net/loveruby/cflat/sysdep/x86/CodeGenerator.java: ditto.
 * net/loveruby/cflat/sysdep/x86/X86Linux.java: ditto.
 * net/loveruby/cflat/compiler/Compiler.java: ditto.
 * net/loveruby/cflat/compiler/Options.java: ditto.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4205 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 16:49:48 +00:00
Minero Aoki 5c0f37ca8a r4815@macbookpro: aamine | 2009-05-10 23:48:56 +0900
* net/loveruby/cflat/parser/Parser.jj: define SOURCE_ENCODING here (again).
 * net/loveruby/cflat/compiler/Constants.java: removed.
 * net/loveruby/cflat/compiler/CodeGenerator.java -> net/loveruby/cflat/codegenerator
 * net/loveruby/cflat/compiler/CodeGeneratorOptions.java -> net/loveruby/cflat/codegenerator
 * net/loveruby/cflat/compiler/Platform.java -> net/loveruby/cflat/sysdep
 * net/loveruby/cflat/compiler/ErrorHandler.java -> net/loveruby/cflat/utils
 * net/loveruby/cflat/compiler/LibraryLoader.java -> net/loveruby/cflat/parser
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4201 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 14:52:00 +00:00
Minero Aoki 2bfba83992 r4811@macbookpro: aamine | 2009-05-10 22:41:42 +0900
* net/loveruby/cflat/sysdep/x86: new package.
 * net/loveruby/cflat/asm/ELFConstants.java -> net/loveruby/cflat/sysdep/x86
 * net/loveruby/cflat/asm/AssemblyFile.java -> net/loveruby/cflat/sysdep/x86
 net/loveruby/cflat/asm/Register.java
 * net/loveruby/cflat/platform/X86Linux.java -> net/loveruby/cflat/sysdep/x86
 * net/loveruby/cflat/compiler/CodeGenerator.java -> net/loveruby/cflat/sysdep/x86
 * net/loveruby/cflat/platform/Platform.java -> net/loveruby/cflat/compiler
 * net/loveruby/cflat/sysdep/x86/Register.java: new file.
 * net/loveruby/cflat/compiler/Options.java: new method #codeGenerator.
 * net/loveruby/cflat/compiler/Compiler.java: get CodeGenerator from Options.
 * net/loveruby/cflat/compiler/CodeGeneratorOptions.java: make public.
 * net/loveruby/cflat/ir/IR.java: now naturalType is useless (provided by CodeGenerator).
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4197 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 14:51:56 +00:00
Minero Aoki 2e1cbdaf66 r4808@macbookpro: aamine | 2009-05-10 20:23:48 +0900
* net/loveruby/cflat/asm/Assembler.java -> AssemblyFile.java
 * net/loveruby/cflat/utils/AsmUtils.java: split #align from AssemblyFile.
 * net/loveruby/cflat/type/StructType.java: use it.
 * net/loveruby/cflat/type/UnionType.java: use it.
 * net/loveruby/cflat/platform: new package to extract platform dependent operations.
 * net/loveruby/cflat/compiler/Compiler.java: use it.
 * net/loveruby/cflat/compiler/CodeGenerator.java: use it.
 * net/loveruby/cflat/compiler/Options.java: provide Platform object.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4194 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 14:51:53 +00:00
Minero Aoki 0f3e2d4609 r4668@macbookpro: aamine | 2009-05-03 22:18:01 +0900
* net/loveruby/cflat/compiler/Compiler.java: new method dumpExpr to dump single expression.
 * net/loveruby/cflat/compiler/CompilerMode.java: add enum value DumpExpr: define new option --dump-expr.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4173 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:16 +00:00
Minero Aoki 6f0f6f729b r4633@macbookpro: aamine | 2009-05-02 09:49:27 +0900
* net/loveruby/cflat/compiler/Compiler.java: refactoring: rename constant: programId -> ProgramName.
 * net/loveruby/cflat/compiler/Options.java: ditto.
 


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4170 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:09 +00:00
Minero Aoki ecdfcff254 * new class Simplifier (it is really a IR generator). Passes compilation, but not tested.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4140 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-19 14:52:48 +00:00
Minero Aoki 3bf172e272 * net/loveruby/cflat/compiler/Compiler.java: make compiler mode enum.
* net/loveruby/cflat/compiler/Options.java: ditto.
* net/loveruby/cflat/compiler/SourceFile.java: ditto.
* net/loveruby/cflat/compiler/CompilerMode.java: new enum.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4086 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 12:28:02 +00:00
Minero Aoki 6b24625a87 * net/loveruby/cflat/compiler/Options.java: new option --readonly-plt.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4076 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-02 09:27:05 +00:00
Minero Aoki cd37fb1f02 * convert all source codes to Java 5 using generics and foreach stmt.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4067 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-28 18:46:56 +00:00
Minero Aoki 9003c4fd72 * net/loveruby/cflat/compiler/Options.java (getOutputFileName): should use outputFileName always when linking, output file of linking is always 1 file.
* net/loveruby/cflat/compiler/Options.java: fixes compile error: new method #isGeneratingPIE.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4066 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-27 22:19:48 +00:00
Minero Aoki 1d35dd1665 * net/loveruby/cflat/compiler/Compiler.java: implement -shared.
* net/loveruby/cflat/compiler/Options.java: new option -shared.
* net/loveruby/cflat/compiler/CodeGeneratorOptions.java: ditto.
* net/loveruby/cflat/compiler/SourceFile.java: new method #linkedFileName.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4065 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-27 22:07:04 +00:00
Minero Aoki 94db94b1c4 cbc does not support stdin.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4064 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-27 20:37:10 +00:00
Minero Aoki 69862827dc * implement PIC generation.
* lib/Makefile: should generate PIC for libcbc.o.
* net/loveruby/cflat/compiler/Compiler.java: pass CodeGeneratorOptions to CodeGenerator.
* net/loveruby/cflat/compiler/Options.java: new options -fpic, -fPIC.
* net/loveruby/cflat/compiler/CodeGenerator.java: use position independent address for global variables, common symbols, defined/undefined functions and string constants.
* net/loveruby/cflat/compiler/CodeGeneratorOptions.java: new class.
* net/loveruby/cflat/asm/ELFConstants.java: new interface to define ELF-related constants.
* net/loveruby/cflat/asm/Assembler.java: new method #hidden.
* net/loveruby/cflat/asm/Assembler.java: new overload #section(s,s,s,s,s).
* net/loveruby/cflat/asm/IndirectMemoryReference.java: offset may not long, but Literal.
* net/loveruby/cflat/asm/Literal.java: new method #isZero.
* net/loveruby/cflat/asm/IntegerLiteral.java: ditto.
* net/loveruby/cflat/asm/LabelRef.java: ditto.
* net/loveruby/cflat/ast/ExprNode.java: new method #shouldEvaluatedToAddres.
* net/loveruby/cflat/ast/VariableNode.java: override it.
* net/loveruby/cflat/ast/CastNode.java: override it.
* net/loveruby/cflat/ast/Entity.java: new method #cannotLoad, to implement #shouldEvaluatedToAddress.
* net/loveruby/cflat/ast/Variable.java: override it.
* net/loveruby/cflat/ast/Function.java: override it.
* net/loveruby/cflat/ast/ExprNode.java: rename method: #AsmLiteral -> #AsmValue because it now returns ImmediateValue instead of Literal.
* net/loveruby/cflat/ast/CastNode.java: override it.
* net/loveruby/cflat/ast/LiteralNode.java: rename method also.
* net/loveruby/cflat/ast/IntegerLiteralNode.java: ditto.
* net/loveruby/cflat/ast/StringLiteralNode.java: ditto.
* net/loveruby/cflat/ast/Variable.java: holds memref and address here, not in subclasses.
* net/loveruby/cflat/ast/DefinedVariable.java: ditto.
* net/loveruby/cflat/ast/UndefinedVariable.java: ditto.
* net/loveruby/cflat/ast/LiteralNode.java: new method #memref.
* net/loveruby/cflat/ast/IntegerLiteralNode.java: implement it.
* net/loveruby/cflat/ast/StringLiteralNode.java: implement it.
* net/loveruby/cflat/ast/ConstantEntry.java: holds memref and address.
* net/loveruby/cflat/ast/AST.java: new method #allFunctions, to access undefined functions from code generator.
* net/loveruby/cflat/ast/ToplevelScope.java: ditto.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4057 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-27 20:07:49 +00:00
Minero Aoki df96fa80c7 * net/loveruby/cflat/asm/PeepholeOptimizer.java: unify insn optimization and jump elimination.
* net/loveruby/cflat/utils/ClonableIterator.java -> Cursor.java
* net/loveruby/cflat/compiler/Options.java: use default optimization rule set for -O.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4052 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-23 15:48:39 +00:00
Minero Aoki 556d917fff * net/loveruby/cflat/compiler/CodeGenerator.java: optimize constant load.
* net/loveruby/cflat/asm/ImmediateValue.java: accept any Literal.
* net/loveruby/cflat/ast/LiteralNode.java: new method #asmLiteral.
* net/loveruby/cflat/ast/CastNode.java: is not constant when cast is effective.
* net/loveruby/cflat/compiler/Compiler.java: new option --verbose-asm.
* net/loveruby/cflat/compiler/Options.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
* net/loveruby/cflat/asm/Assembler.java: new method #indentComment, #unindentComment.
* net/loveruby/cflat/asm/AsmComment.java: indent comments.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4041 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-20 20:43:34 +00:00
Minero Aoki 076d0dea13 * net/loveruby/cflat/compiler/Options.java: new option -O0, -O, -O1, -O2, -Os.
* net/loveruby/cflat/asm/AsmOptimizer.java: new interface to switch optimizer dynamicly.
* net/loveruby/cflat/compiler/PeepholeOptimizer.java -> asm/PeepholeOptimizer.java
* net/loveruby/cflat/compiler/CodeGenerator.java: parameterize AsmOptimizer.
* net/loveruby/cflat/ast/AST.java: holds a typeTable.
* net/loveruby/cflat/compiler/Compiler.java: follow AST change.
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/LocalReferenceResolver.java: ditto.
* net/loveruby/cflat/compiler/DereferenceChecker.java: ditto.
* net/loveruby/cflat/compiler/JumpResolver.java: ditto.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4039 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-20 15:13:09 +00:00
Minero Aoki 9a0bfed9f0 * net/loveruby/cflat/compiler/Compiler.java: handle multiple source files.
* net/loveruby/cflat/compiler/Options.java: new class forked from Compiler.java.  Command option parser.
* net/loveruby/cflat/compiler/SourceFile.java: new class.
* net/loveruby/cflat/compiler/LdOption.java: new class.
* net/loveruby/cflat/compiler/LdArg.java: new interface.
* net/loveruby/cflat/exception/OptionParseError.java: new error class.
* test: test multiple input.


git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4016 1b9489fe-b721-0410-924e-b54b9192deb8
2008-09-14 15:51:46 +00:00