Minero Aoki
eedb1294e3
* net/loveruby/cflat/sysdep/x86/CodeGenerator.java: assign address for gvar.
...
* net/loveruby/cflat/entity/Entity.java: accept imm address.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4298 1b9489fe-b721-0410-924e-b54b9192deb8
2009-06-21 08:15:21 +00:00
Minero Aoki
aabbca6e13
r4971@macbookpro: aamine | 2009-05-26 13:19:10 +0900
...
* net/loveruby/cflat/asm: refactoring: rename class: AsmOperand -> Operand.
* net/loveruby/cflat/asm: follow it.
* net/loveruby/cflat/sysdep/x86: follow it.
* net/loveruby/cflat/ir: follow it.
* net/loveruby/cflat/entity: follow it.
git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4259 1b9489fe-b721-0410-924e-b54b9192deb8
2009-05-26 04:24:46 +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
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
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