Minero Aoki
2bca02006e
* net/loveruby/cflat/compiler/IRGenerator.java: refactoring: extract method: #bin.
...
* net/loveruby/cflat/compiler/IRGenerator.java: refactoring: extract method: #isPointerDiff.
* net/loveruby/cflat/compiler/IRGenerator.java: refactoring: extract method: #isPointerArithmetic.
* net/loveruby/cflat/type/TypeTable.java: new method #longSize.
* net/loveruby/cflat/ast/ExprNode.java: remove unused method #baseSize.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4228 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-23 12:34:09 +00:00
Minero Aoki
7af5ebc4a9
r4875@macbookpro: aamine | 2009-05-18 05:10:22 +0900
...
* net/loveruby/cflat/compiler/TypeChecker.java: allow ptr-ptr.
* net/loveruby/cflat/compiler/IRGenerator.java: implement ptr-ptr.
* net/loveruby/cflat/type/VoidType.java: VoidType#size is 1.
* net/loveruby/cflat/ast/ExprNode.java: new helper method #baseType.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4225 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 20:10:28 +00:00
Minero Aoki
68c4a0104b
r4870@macbookpro: aamine | 2009-05-18 03:51:57 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java (optimize): wrongly did not optimize asm code.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4223 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 19:14:03 +00:00
Minero Aoki
7d580ddf77
r4866@macbookpro: aamine | 2009-05-18 03:31:01 +0900
...
* net/loveruby/cflat/compiler/TypeResolver.java: move x[] -> x* code to DereferenceChecker.
* net/loveruby/cflat/compiler/DereferenceChecker.java: ditto.
* net/loveruby/cflat/compiler/Compiler.java: pass TypeTable to DereferenceChecker.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4221 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 18:35:04 +00:00
Minero Aoki
3b29c039bd
r4865@macbookpro: aamine | 2009-05-18 03:02:28 +0900
...
* net/loveruby/cflat/parser/Parser.jj: change function pointer syntax: int(*)(int,int) -> int(int,int)*. Function type is int(int,int).
* net/loveruby/cflat/parser/Parser.jj: function returns function type, not pointer to function.
* net/loveruby/cflat/compiler/TypeResolver.java: resolve all function headers first, then resolve bodies.
* net/loveruby/cflat/compiler/TypeResolver.java: generate a pointer for array-type expression.
* net/loveruby/cflat/compiler/TypeResolver.java: isDereferable -> isPointer.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/DereferenceChecker.java: ditto.
* net/loveruby/cflat/compiler/IRGenerator.java: ditto.
* net/loveruby/cflat/compiler/IRGenerator.java: shouldEvaluatedToAddress -> isLoadable (check arrays and functions, not only arrays).
* net/loveruby/cflat/type/Type.java: remove #isDereferable.
* net/loveruby/cflat/type/UserType.java: ditto.
* net/loveruby/cflat/type/ArrayType.java: is not a scalar.
* net/loveruby/cflat/type/ArrayType.java: is not dereferable itself.
* net/loveruby/cflat/type/PointerType.java: is incompatible with arrays.
* net/loveruby/cflat/type/IntegerType.java: ditto.
* net/loveruby/cflat/type/FunctionType.java: is callable.
* net/loveruby/cflat/type/ParamTypeRefs.java: x[] -> x* for param types.
* net/loveruby/cflat/type/TypeTable.java: new method #getParamType.
* net/loveruby/cflat/ast/ExprNode.java: new method #isLvalue.
* net/loveruby/cflat/ast/ExprNode.java: new method #isAssignable.
* net/loveruby/cflat/ast/ExprNode.java: new method #isLoadable.
* net/loveruby/cflat/ast/CastNode.java: delegate them.
* net/loveruby/cflat/ast/LHSNode.java: new super class of LHS nodes.
* net/loveruby/cflat/ast/VariableNode.java: ditto.
* net/loveruby/cflat/ast/DereferenceNode.java: ditto.
* net/loveruby/cflat/ast/ArefNode.java: ditto.
* net/loveruby/cflat/ast/MemberNode.java: ditto.
* net/loveruby/cflat/ast/PtrMemberNode.java: ditto.
* net/loveruby/cflat/entity/Entity.java: remove #cannotLoad.
* net/loveruby/cflat/entity/Function.java: ditto.
* net/loveruby/cflat/entity/Variable.java: ditto.
* net/loveruby/cflat/entity/Constant.java: ditto.
* net/loveruby/cflat/ir/Addr.java: is not LHS node now.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4220 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 18:35:02 +00:00
Minero Aoki
ced081c9c3
r4855@macbookpro: aamine | 2009-05-17 16:38:28 +0900
...
* import/dlfcn.hb: new declaration file dlfcn.hb.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4219 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 07:39:02 +00:00
Minero Aoki
cf8e221756
r4854@macbookpro: aamine | 2009-05-17 16:37:51 +0900
...
* net/loveruby/cflat/entity/ToplevelScope.java: do not warn unused constant.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4218 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 07:39:01 +00:00
Minero Aoki
d3194fb8bd
r4853@macbookpro: aamine | 2009-05-17 16:34:27 +0900
...
* net/loveruby/cflat/parser/Parser.jj: support constant definition.
* net/loveruby/cflat/ast/Declarations.java: hold constants.
* net/loveruby/cflat/ast/AST.java: ditto.
* net/loveruby/cflat/compiler/LocalResolver.java: resolve constants.
* net/loveruby/cflat/compiler/TypeResolver.java: resolve constants.
* net/loveruby/cflat/compiler/IRGenerator.java: transform constants reference into literal value.
* net/loveruby/cflat/compiler/DereferenceChecker.java: check if toplevel variable initializer consists of a literal.
* net/loveruby/cflat/compiler/DereferenceChecker.java: check if constant value consists of a literal.
* net/loveruby/cflat/ast/ExprNode.java: new method #isConstant.
* net/loveruby/cflat/ast/LiteralNode.java: override.
* net/loveruby/cflat/entity/Entity.java: support Constant.
* net/loveruby/cflat/entity/Constant.java: new entity.
* net/loveruby/cflat/entity/EntityVisitor.java: add Constant.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4217 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 07:39:00 +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
3ddae38cb1
r4846@macbookpro: aamine | 2009-05-16 18:12:26 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: fix typo.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4215 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 02:27:35 +00:00
Minero Aoki
e2536e611e
r4845@macbookpro: aamine | 2009-05-16 18:04:25 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: parameterize naturalType.
* net/loveruby/cflat/sysdep/X86Linux.java: provide parameter.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4214 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 02:27:34 +00:00
Minero Aoki
ed319a4bc0
r4844@macbookpro: aamine | 2009-05-16 17:50:02 +0900
...
* net/loveruby/cflat/sysdep/x86/AssemblyFile.java: use Type instead of size.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4213 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 02:27:34 +00:00
Minero Aoki
84626ea57e
r4843@macbookpro: aamine | 2009-05-16 17:21:40 +0900
...
* net/loveruby/cflat/asm/Register.java: use enum for register name.
* net/loveruby/cflat/sysdep/x86/RegKind.java: new enum.
* net/loveruby/cflat/sysdep/x86/Register.java: move system dependent code to sysdep/x86/Register.
* net/loveruby/cflat/asm/IndirectMemoryReference.java: reduce dependency to Register method.
* net/loveruby/cflat/sysdep/x86/AssemblyFile.java: use RegKind.
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: reg(*) -> ax(), bx(), cx(), ...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4212 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-17 02:27:33 +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
f6c90ab8da
r4828@macbookpro: aamine | 2009-05-11 01:49:02 +0900
...
* net/loveruby/cflat/parser/Parser.jj: use JDK_VERSION="1.5" to suppress warnings.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4206 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 16:49:49 +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
3a7d40e63d
r4826@macbookpro: aamine | 2009-05-11 01:40:01 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: use PeepholeOptimizer directly.
* net/loveruby/cflat/asm/PeepholeOptimizer.java -> net/loveruby/cflat/sysdep/x86
* net/loveruby/cflat/asm/AsmOptimizer.java: removed.
* net/loveruby/cflat/codegenerator/CodeGeneratorOptions.java: should not provide PeepholeOptimizer, just provide optimizationLevel.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4204 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 16:49:47 +00:00
Minero Aoki
c970823e99
r4825@macbookpro: aamine | 2009-05-11 01:31:01 +0900
...
* net/loveruby/cflat/compiler/Compiler.java: move dumper code to AST to minimize Compiler code.
* net/loveruby/cflat/ast/AST.java: add dumper code.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4203 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 16:49:46 +00:00
Minero Aoki
703b44faf5
r4824@macbookpro: aamine | 2009-05-11 01:09:13 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: generate address expression for LHS expr.
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: remove #compileLHS. Just compile LHS expr.
* net/loveruby/cflat/ir/Addr.java: is a constant address now.
* net/loveruby/cflat/ir/Var.java: is not a constant address now.
* net/loveruby/cflat/ir/Expr.java: new base method #addressNode.
* net/loveruby/cflat/ir/Mem.java: override #addressNode.
* net/loveruby/cflat/ir/Var.java: ditto.
* net/loveruby/cflat/ir/Addr.java: ditto.
* net/loveruby/cflat/ir/Expr.java: new base method #getEntityForce.
* net/loveruby/cflat/ir/Var.java: override #getEntityForce.
* net/loveruby/cflat/ir/Addr.java: ditto.
* net/loveruby/cflat/ir/Call.java: get function entity by Expr#getEntityForce.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4202 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 16:49:45 +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
b2bf10c92d
r4814@macbookpro: aamine | 2009-05-10 23:05:44 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: move virtual stack to AssemblyFile.
* net/loveruby/cflat/sysdep/x86/AssemblyFile.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4200 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 14:51:58 +00:00
Minero Aoki
c1dfb94513
r4813@macbookpro: aamine | 2009-05-10 22:46:19 +0900
...
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: protected -> private.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4199 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-10 14:51:57 +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
6e8bfed7a3
r4762@macbookpro: aamine | 2009-05-07 13:00:19 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: should not return Expr for stmt, to suppress wrong warning.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4193 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:41:03 +00:00
Minero Aoki
2ce6ddbd93
r4760@macbookpro: aamine | 2009-05-07 12:55:51 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java (AddressNode): always omit Addr for #shouldEvaluatedToAddress node.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4191 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:41:02 +00:00
Minero Aoki
e06185e56d
r4756@macbookpro: aamine | 2009-05-07 11:06:57 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java (BinaryOpNode): evaluate RIGHT before LEFT.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4189 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:41:00 +00:00
Minero Aoki
586a7d8bd3
r4754@macbookpro: aamine | 2009-05-07 10:31:21 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: fix compile error.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4187 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:59 +00:00
Minero Aoki
9f4a9fc8bc
r4753@macbookpro: aamine | 2009-05-07 10:01:52 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: emit statement info for casted stmt.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4186 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:59 +00:00
Minero Aoki
8a57dbbdd8
r4751@macbookpro: aamine | 2009-05-06 18:40:33 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: assignBeforeStmt is useless. Use assign instead.
* net/loveruby/cflat/compiler/IRGenerator.java: should be able to create tmp in variable initializers for also function toplevel block.
* net/loveruby/cflat/compiler/IRGenerator.java: move funcall before stmt.
* net/loveruby/cflat/compiler/CodeGenerator.java: do not display "(null)" location.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4184 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:57 +00:00
Minero Aoki
98937145c8
r4749@macbookpro: aamine | 2009-05-06 17:08:10 +0900
...
* net/loveruby/cflat/compiler/CodeGenerator.java: refactoring: rename variables.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4183 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:56 +00:00
Minero Aoki
ec4ae3acfd
r4747@macbookpro: aamine | 2009-05-06 15:49:51 +0900
...
* net/loveruby/cflat/asm/Type.java: types should not know signed or not.
* net/loveruby/cflat/ir/Op.java: have signed/unsigned information.
* net/loveruby/cflat/compiler/IRGenerator.java: use new op and type.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java (FuncallNode): should check optional argument types.
* net/loveruby/cflat/compiler/CodeGenerator.java: now use simple mov to load values from memory (and cast it later).
* net/loveruby/cflat/type/TypeTable.java: provide stack value type.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4182 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:53 +00:00
Minero Aoki
12979779e3
r4746@macbookpro: aamine | 2009-05-06 14:53:56 +0900
...
* net/loveruby/cflat/compiler/IRGenerator.java: isStatement() did not work correctly; e.g. return ++argc failed to return value, because ++argc was wrongly judged as statemen (is really expr).
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4181 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:52 +00:00
Minero Aoki
e9beca5096
r4743@macbookpro: aamine | 2009-05-06 14:18:45 +0900
...
* net/loveruby/cflat/ir/StringValue.java -> Str.java
* net/loveruby/cflat/ir/IntValue.java -> Int.java
* net/loveruby/cflat/ir/IRVisitor.java: ditto.
* net/loveruby/cflat/compiler/IRGenerator.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4178 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:50 +00:00
Minero Aoki
4a93ac31fb
r4732@macbookpro: aamine | 2009-05-04 19:00:37 +0900
...
* net/loveruby/cflat/compiler/LocalResolver.java: create ToplevelScope, ConstantTable here (instead of creating them in AST).
* net/loveruby/cflat/ast/AST.java: do not create ToplevelScope, ConstantTable by myself.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4175 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-08 10:40:47 +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
3c409c9bf4
r4659@macbookpro: aamine | 2009-05-03 19:08:18 +0900
...
* net/loveruby/cflat/parser/Parser.jj: sizeof TYPE requires one more lookahead because EXPR of "sizeof EXPR" may have parentheses, too. We can distinguish type and expr by 1 look ahead, because Head of type() == head of typeref() == head of typeref_base(). typeref_base has unique terminal on head.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4172 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:13 +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
05e1bc273a
r4632@macbookpro: aamine | 2009-05-02 09:30:52 +0900
...
* net/loveruby/cflat/compiler/Compiler.java (commandMain): refactoring: extract method: #buildTarget.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4169 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:07 +00:00
Minero Aoki
b8ed3ab439
r4629@macbookpro: aamine | 2009-04-30 22:53:58 +0900
...
* net/loveruby/cflat/compiler/CodeGenerator.java: remove unused method #doesSpillDX.
* net/loveruby/cflat/compiler/CodeGenerator.java: add "left" argument to #compileBinaryOp.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4168 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:05 +00:00
Minero Aoki
1c13cc4aa1
r4628@macbookpro: aamine | 2009-04-30 22:19:48 +0900
...
* net/loveruby/cflat/ast/ConstantTable.java: move under entity/.
* net/loveruby/cflat/ast/ConstantEntry.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: follow it.
* net/loveruby/cflat/ast/StringLiteralNode.java: follow it.
* net/loveruby/cflat/ir/StringValue.java: follow it.
* net/loveruby/cflat/ir/IR.java: follow it.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4167 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:46:03 +00:00
Minero Aoki
730345ab89
r4627@macbookpro: aamine | 2009-04-30 22:06:11 +0900
...
* net/loveruby/cflat/ast/AbstractAssignNode.java: remove unused setter setLHS.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4166 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:45:59 +00:00
Minero Aoki
a5a58d9ef8
r4626@macbookpro: aamine | 2009-04-30 21:49:44 +0900
...
* net/loveruby/cflat/ast/*.java: remove unused reference to asm.Label.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4165 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-03 14:45:57 +00:00
Minero Aoki
e66d1b59d9
* net/loveruby/cflat/entity: new package.
...
* net/loveruby/cflat/ast: move Entity and its subclasses under entity/.
* net/loveruby/cflat/ast: move Scope and its subclasses under entity/.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4162 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 17:55:46 +00:00
Minero Aoki
9c1be1e20f
* net/loveruby/cflat/ast/DefinedFunction.java: remove unused method #epilogueLabel.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4161 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 17:12:20 +00:00
Minero Aoki
2f7019356a
* net/loveruby/cflat/asm/Type.java: new class representing assembly integer types.
...
* net/loveruby/cflat/asm/*.java: support it.
* net/loveruby/cflat/ir/*.java: support it.
* net/loveruby/cflat/compiler/IRGenerator.java: convert ast Type -> asm Type.
* net/loveruby/cflat/compiler/CodeGenerator.java: use asm Type.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4160 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 17:04:29 +00:00
Minero Aoki
8e8ae12043
* net/loveruby/cflat/compiler/CodeGenerator.java: remove simple delegators (to Assembler).
...
* net/loveruby/cflat/asm/Assembler.java: add _byte(long), etc.
* net/loveruby/cflat/ir/IR.java: do not export typeTable, provide natural type instead.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4159 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 15:24:36 +00:00
Minero Aoki
a5eb1024f9
* net/loveruby/cflat/compiler/IRGenerator.java: use ExprNode#shouldEvalutedToAddress again, it contains complex condition.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4158 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 14:54:52 +00:00
Minero Aoki
82586f9184
* net/loveruby/cflat/ir/Expr.java: show Expr type on dump.
...
* net/loveruby/cflat/type/FunctionType.java: FunctionType#toString should separate each argument types by ",".
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4157 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 14:39:59 +00:00
Minero Aoki
524db547c6
* net/loveruby/cflat/ir: implement IR#dump.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4156 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 14:35:10 +00:00
Minero Aoki
04f5d8e6cc
* net/loveruby/cflat/compiler/IRGenerator.java (BlockNode): static variables are special case.
...
* net/loveruby/cflat/compiler/IRGenerator.java (SwitchNode): Switch must precedes Case bodies to prevent programs from infinite loop.
* net/loveruby/cflat/compiler/CodeGenerator.java (Bin): fix MOD problem.
* net/loveruby/cflat/compiler/CodeGenerator.java (Bin): fix LSHIFT problem.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4155 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 13:41:19 +00:00
Minero Aoki
0b3098612a
* now IR nodes are separated from AST. Sources are compilable but not tested yet.
...
* ir/*: new classes.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4154 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 13:08:40 +00:00
Minero Aoki
eaba86066f
* ast/ASTVisitor.java: fork DeclarationVisitor.
...
* ast/DeclarationVisitor.java: new class.
* compiler/Visitor.java: do not visit declarations.
* compiler/TypeResolver.java: visit declarations explicitly.
* compiler/IRGenerator.java: remove useless declarations acceptor.
* compiler/CodeGenerator.java: ditto.
* ast/Entity.java: accept DeclarationVisitor.
* ast/DefinedFunction.java: ditto.
* ast/UndefinedFunction.java: ditto.
* ast/DefinedVariable.java: ditto.
* ast/UndefinedVariable.java: ditto.
* ast/TypeDefinition.java: ditto.
* ast/StructNode.java: ditto.
* ast/UnionNode.java: ditto.
* ast/TypedefNode.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4153 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 09:09:52 +00:00
Minero Aoki
68a99258e5
* net/loveruby/cflat/compiler/IRGenerator.java (SuffixOp): do not calculate twice. Save expr value and reuse it.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4152 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 08:45:30 +00:00
Minero Aoki
f23dd70dd2
* net/loveruby/cflat/compiler/IRGenerator.java: must compile initializer.
...
* net/loveruby/cflat/compiler/IRGenerator.java: f = &puts generated addr(addr(puts)), so remove redundant AddressNode.
* net/loveruby/cflat/compiler/CodeGenerator.java: now --verbose-asm works.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4151 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 08:25:30 +00:00
Minero Aoki
41e5e61c16
* net/loveruby/cflat/compiler/IRGenerator.java: treat LHS specially and remove AddressNode at the top of the LHS tree (e.g. printf = 0 generates &printf = 0).
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4150 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 07:51:05 +00:00
Minero Aoki
e8f10dc3f6
* net/loveruby/cflat/compiler/Simplifier.java -> IRGenerator.java
...
* net/loveruby/cflat/compiler/Compiler.java: rename class.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4149 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 07:19:33 +00:00
Minero Aoki
732ebf51d4
* net/loveruby/cflat/compiler/Simplifier.java (SwitchNode): missing end label.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4148 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 07:10:29 +00:00
Minero Aoki
9e9f65d6ce
* net/loveruby/cflat/ast/FuncallNode.java: make a static funcall really static funcall (not use pointer).
...
net/loveruby/cflat/compiler/Simplifier.java: set aref result type.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4147 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 06:48:12 +00:00
Minero Aoki
78a2217cd9
* net/loveruby/cflat/ast/FuncallNode.java: detect static call.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4146 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 04:50:57 +00:00
Minero Aoki
1074c0177f
* net/loveruby/cflat/compiler/Simplifier.java (While): must loop.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4145 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 04:30:15 +00:00
Minero Aoki
487cf1a714
* net/loveruby/cflat/compiler/Simplifier.java (SuffixOp): too few deref.
...
* net/loveruby/cflat/compiler/Simplifier.java (MemberNode): should set type.
* net/loveruby/cflat/compiler/Simplifier.java (PtrMemberNode): should set type.
* net/loveruby/cflat/compiler/Simplifier.java (Deref, Addr): should compile child expr.
* net/loveruby/cflat/ast/BinaryOpNode.java (ctor): accept type.
* net/loveruby/cflat/ast/TypeNode.java (location): do not raise exception when no typeRef exist.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4144 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 04:22:42 +00:00
Minero Aoki
99b5be5455
* net/loveruby/cflat/asm/PeepholeOptimizer.java: fix bad operator mnemonic. (fixes 4E)
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4143 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-26 03:18:09 +00:00
Minero Aoki
63170db30b
* now many tests work (30/1709 failed).
...
* net/loveruby/cflat/compiler/Simplifier.java: set location of AssignStmtNode.
* net/loveruby/cflat/compiler/Simplifier.java: allocate tmp variable in scope.
* net/loveruby/cflat/compiler/Simplifier.java: opAssign/inc/dec handling was completely wrong (there still be some problems yet).
* net/loveruby/cflat/compiler/CodeGenerator.java (compileLHS): implemented for IR.
* net/loveruby/cflat/compiler/CodeGenerator.java (loadVarible): implemented for IR.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4142 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-19 18:52:12 +00:00
Minero Aoki
97fbe0672c
* net/loveruby/cflat/ast/IR.java: new class to represents IR.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4141 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-19 15:39:18 +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
1e80fec3ab
* refactoring: rename class: compiler/Simplifier.java -> IRGenerator.java.
...
* compiler/Compiler.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4139 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-19 05:57:41 +00:00
Minero Aoki
ae4073e7c3
revert r4136 (no IR)
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4138 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-19 05:50:16 +00:00
Minero Aoki
444c8e1bd9
* net/loveruby/cflat/compiler/IRGenerator.java: generates IR (intermediate representation) tree (work is still incomplete but commit for logging).
...
* net/loveruby/cflat/ir: new package to hold IR tree nodes.
* net/loveruby/cflat/ir/IRTree.java: new class.
* net/loveruby/cflat/ir/Stmt.java: new class.
* net/loveruby/cflat/ir/StmtKind.java: new enum.
* net/loveruby/cflat/ir/Expr.java: new class.
* net/loveruby/cflat/ir/ExprKind.java: new enum.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4136 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-12 16:53:28 +00:00
Minero Aoki
5a287a7b48
* net/loveruby/cflat/compiler/TypeChecker.java: split IRGenerator.
...
* net/loveruby/cflat/compiler/IRGenerator.java: new class.
* net/loveruby/cflat/compiler/Compiler.java: call IRGenerator.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4135 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-12 08:49:23 +00:00
Minero Aoki
8d208c36cc
* net/loveruby/cflat/compiler/TypeChecker.java: simplify BinaryOp checking, utilizing destructive methods.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4134 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-12 07:48:17 +00:00
Minero Aoki
f69902e1d7
* net/loveruby/cflat/compiler/Visitor.java: make destructive again.
...
* net/loveruby/cflat/compiler/TypeResolver.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/compiler/LocalResolver.java: ditto.
* net/loveruby/cflat/compiler/CodeGenerator.java: ditto.
* net/loveruby/cflat/compiler/DereferenceChecker.java: ditto.
* net/loveruby/cflat/compiler/JumpResolver.java: ditto.
* net/loveruby/cflat/ast/AbstractAssignNode.java: ditto.
* net/loveruby/cflat/ast/CondExprNode.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4133 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-12 07:37:18 +00:00
Minero Aoki
d514300aef
* net/loveruby/cflat/compiler/Visitor.java: make all return types generic.
...
* net/loveruby/cflat/compiler/TypeChecker.java: ditto.
* net/loveruby/cflat/ast/*.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4132 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-12 06:31:12 +00:00
Minero Aoki
33dcef983b
* net/loveruby/cflat/compiler/Compiler.java: call JumpResolver at last.
...
* net/loveruby/cflat/compiler/TypeChecker.java: TypeChecker has required ReturnNode.function, provide "current function" by myself.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4131 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-05 22:04:35 +00:00
Minero Aoki
043859df0b
* net/loveruby/cflat/ast/ASTVisitor.java: #visit returns a node which has same type with the argument, to allow non-destructive AST rewriting.
...
* net/loveruby/cflat/ast/*Node.java (#accept): ditto.
* net/loveruby/cflat/compiler/Visitor.java: ditto.
* net/loveruby/cflat/compiler/*.java: ditto.
* net/loveruby/cflat/compiler/TypeChecker.java: make non-destructive.
* net/loveruby/cflat/parser/Parser.jj: use StmtNode/ExprNode instead of Node.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4130 1b9489fe-b721-0410-924e-b54b9192deb8
2009-04-04 14:47:11 +00:00
Minero Aoki
b09c3f044f
* lib/sizeof_jmpbuf.c: new analysis program.
...
* lib/Makefile: add a rule to build sizeof_jmpbuf.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4115 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-23 18:43:17 +00:00
Minero Aoki
4cb2818d45
* import/setjmp.hb: new file to support setjmp.
...
* test: test setjmp.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4113 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-23 17:54:11 +00:00
Minero Aoki
f6a1df9142
* introduce virtual stack again, for only local variables and tmp variables. Function arguments use true push & pop.
...
* --verbose-asm prints stack frame layout in detail.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4110 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-14 15:05:20 +00:00
Minero Aoki
73ecd8d50b
* test: test alloca more.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4108 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-14 12:04:58 +00:00
Minero Aoki
e0105bda01
* net/loveruby/cflat/compiler/CodeGenerator.java (compileFunctionBody): remove bp from saveRegs first.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4107 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-14 11:43:51 +00:00
Minero Aoki
76fd64dc52
* lib/alloca.s: alloca() implemeted.
...
* lib/Makefile: build it.
* import/alloca.hb: declare alloca.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4103 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 15:55:40 +00:00
Minero Aoki
b598628af9
* net: revert r4100; implementing alloca() is too difficult for current architecture.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4102 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 14:26:56 +00:00
Minero Aoki
37476f6839
* lib/libcbc.cb -> lib/stdarg.cb
...
* lib/Makefile: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4101 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 14:25:31 +00:00
Minero Aoki
e64c1373c0
* net/loveruby/cflat/compiler/CodeGenerator.java: manage stack offset by generator, instead of using machine push/pop.
...
* net/loveruby/cflat/asm/Assembler.java: new method relocatableMov.
* net/loveruby/cflat/asm/Assembly.java: allow fixing indirect memory access offset.
* net/loveruby/cflat/asm/Instruction.java: ditto.
* net/loveruby/cflat/asm/AsmOperand.java: ditto.
* net/loveruby/cflat/asm/IndirectMemoryReference.java: ditto.
* net/loveruby/cflat/asm/IntegerLiteral.java: ditto.
* net/loveruby/cflat/asm/Literal.java: ditto.
* net/loveruby/cflat/asm/BaseSymbol.java: ditto.
* net/loveruby/cflat/asm/SuffixedSymbol.java: ditto.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4100 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 13:27:54 +00:00
Minero Aoki
278c5bea47
* net/loveruby/cflat/compiler/LocalReferenceResolver.java -> LocalResolver.java
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4099 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 08:13:47 +00:00
Minero Aoki
545515b5e0
* net/loveruby/cflat/ast/ToplevelScope.java: use SemanticException instead of SemanticError for duplicated declarations/definitions.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4098 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 08:09:20 +00:00
Minero Aoki
1524d3d719
* test: test declaration override.
...
* test/run.sh: new option --help.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4096 1b9489fe-b721-0410-924e-b54b9192deb8
2008-12-07 07:56:00 +00:00
Minero Aoki
96fb88ec26
* net/loveruby/cflat/compiler/CodeGenerator.java: refactoring: reduce lvar.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4091 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-24 09:49:31 +00:00
Minero Aoki
234bd96642
* net/loveruby/cflat/compiler/TypeResolver.java: an array on the parameter list is a pointer really.
...
* net/loveruby/cflat/compiler/TypeChecker.java: an array for stmt value *is* valid because it is a pointer really.
* net/loveruby/cflat/compiler/CodeGenerator.java: st.x while st.x is an array should make a pointer.
* net/loveruby/cflat/type/Type.java: remove #isPointerAlike, there is only a Pointer and an Array already.
* net/loveruby/cflat/type/ArrayType.java: ditto.
* net/loveruby/cflat/type/PointerType.java: ditto.
* net/loveruby/cflat/type/UserType.java: ditto.
* net/loveruby/cflat/ast/ArefNode.java: ditto.
* net/loveruby/cflat/ast/Variable.java: ditto.
* net/loveruby/cflat/ast/ExprNode.java: ditto.
* test: check st.x[1] access.
* test: check pst->x[1] access.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4089 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 14:57:11 +00:00
Minero Aoki
1f47ab6771
* net/loveruby/cflat/compiler/TypeResolver.java: "f = puts" implies "f = &puts", adjust type for such expressions.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4088 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 13:29:35 +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
83dcd37243
* net/loveruby/cflat/compiler/DereferenceChecker.java: We do not need to check an OpAssignNode as operator, because this class only check references.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4085 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 11:20:19 +00:00
Minero Aoki
89c7decdad
* net/loveruby/cflat/compiler/CodeGenerator.java (compileAST): should not generate .data section when no global variable is defined.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4083 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 11:11:01 +00:00
Minero Aoki
aa030b42b7
* net/loveruby/cflat/compiler/CodeGenerator.java: should access file-local gvar directly (with @GOTOFF) in PIE.
...
* net/loveruby/cflat/ast/Entity.java: all entities should have memref or address.
* net/loveruby/cflat/ast/Variable.java: ditto.
* net/loveruby/cflat/ast/DefinedVariable.java: ditto.
* net/loveruby/cflat/ast/UndefinedVariable.java: ditto.
* net/loveruby/cflat/ast/Function.java: ditto.
* net/loveruby/cflat/ast/DefinedFunction.java: ditto.
* import/stdlib.hb: add new declarations.
* import/unistd.hb: add new declarations.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4082 1b9489fe-b721-0410-924e-b54b9192deb8
2008-11-16 11:01:10 +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
2d0babf4c4
* bin/cbc: resolve symbolic link to command file.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4074 1b9489fe-b721-0410-924e-b54b9192deb8
2008-10-25 22:04:56 +00:00
Minero Aoki
dd5d3dd4f0
* name code symbols lazily.
...
* separate Label and Symbol.
* net/loveruby/cflat/compiler/CodeGenerator.java: use Symbol instead of Label for entity symbol.
* net/loveruby/cflat/asm/Symbol.java: new interface.
* net/loveruby/cflat/asm/BaseSymbol.java: new class.
* net/loveruby/cflat/asm/NamedSymbol.java: new class.
* net/loveruby/cflat/asm/SuffixedSymbol.java: new class.
* net/loveruby/cflat/asm/UnnamedSymbol.java: new class.
* net/loveruby/cflat/asm/SymbolTable.java: new class.
* net/loveruby/cflat/asm/*.java: Label -> Symbol.
* net/loveruby/cflat/asm/LabelRef.java: removed.
* net/loveruby/cflat/ast/*.java: Label -> Symbol.
* net/loveruby/cflat/parser/Parser.jj: does not pass a LabelPool anymore.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4072 1b9489fe-b721-0410-924e-b54b9192deb8
2008-10-24 18:40:21 +00:00
Minero Aoki
11e6f1ab64
* net/loveruby/cflat/ast/*.java: minimize references to asm/*.
...
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4071 1b9489fe-b721-0410-924e-b54b9192deb8
2008-10-24 14:03:31 +00:00