Minero Aoki
ee8432d4fa
r5104@macbookpro: aamine | 2009-06-13 22:43:16 +0900
...
* rename class: AssemblyFile -> AssemblyCode.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4292 1b9489fe-b721-0410-924e-b54b9192deb8
2009-06-13 13:46:36 +00:00
Minero Aoki
8049035053
r4986@macbookpro: aamine | 2009-05-26 16:07:49 +0900
...
* net/loveruby/cflat/compiler/Compiler.java: --dump-asm now dumps AssemblyFile.
* net/loveruby/cflat/compiler/Compiler.java: new option --print-asm, prints assembly source text.
* net/loveruby/cflat/compiler/CompilerMode.java: new enum PrintAsm.
* net/loveruby/cflat/compiler/Options.java: new option --print-asm.
* net/loveruby/cflat/sysdep/x86/AssemblyFile.java: new method #dump.
* net/loveruby/cflat/sysdep/x86/Register.java: new method #dump.
* net/loveruby/cflat/asm: new method #dump.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4264 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-26 07:52:44 +00:00
Minero Aoki
7ce8034b0f
r4967@macbookpro: aamine | 2009-05-26 12:21:40 +0900
...
* net/loveruby/cflat/compiler/Options.java: check unknown file types.
* net/loveruby/cflat/compiler/SourceFile.java: new method #isKnownFileType.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4255 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-26 04:24:42 +00:00
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