mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-26 12:49:21 +00:00
Working on catching all declared constants in parse 0.
This commit is contained in:
parent
9403fe34c8
commit
0e1acd35d2
@ -85,8 +85,7 @@ public class SymbolTypeStruct implements SymbolType {
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
SymbolTypeStruct that = (SymbolTypeStruct) o;
|
||||
return sizeBytes == that.sizeBytes &&
|
||||
Objects.equals(name, that.name);
|
||||
return Objects.equals(name, that.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2020,6 +2020,9 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
return new ConstantInteger(-((ConstantInteger) child).getInteger(), ((ConstantInteger) child).getType());
|
||||
} else if(operator.equals(Operators.ADDRESS_OF) && child instanceof SymbolRef) {
|
||||
return new ConstantSymbolPointer((SymbolRef) child);
|
||||
} else if(operator.equals(Operators.ADDRESS_OF) && child instanceof PointerDereferenceIndexed && ((PointerDereferenceIndexed) child).getPointer() instanceof ConstantValue && ((PointerDereferenceIndexed) child).getIndex() instanceof ConstantValue) {
|
||||
PointerDereferenceIndexed pointerDeref = (PointerDereferenceIndexed) child;
|
||||
return new ConstantBinary((ConstantValue) pointerDeref.getPointer(), Operators.PLUS, (ConstantValue)pointerDeref.getIndex());
|
||||
} else if(child instanceof ConstantValue) {
|
||||
return new ConstantUnary((OperatorUnary) operator, (ConstantValue) child);
|
||||
} else {
|
||||
|
@ -15,9 +15,9 @@ const char[0x200] align(0x100) SINTABLE = kickasm {{
|
||||
}};
|
||||
|
||||
// Screen containing distance to center
|
||||
const byte* SCREEN_DIST = malloc(1000);
|
||||
byte* SCREEN_DIST = malloc(1000);
|
||||
// Screen containing angle to center
|
||||
const byte* SCREEN_ANGLE = malloc(1000);
|
||||
byte* SCREEN_ANGLE = malloc(1000);
|
||||
// Plasma charset
|
||||
const char* CHARSET = 0x2000;
|
||||
// Plasma screen 1
|
||||
|
@ -7,9 +7,9 @@ import "sqr"
|
||||
import "atan2"
|
||||
|
||||
// Screen containing distance to center
|
||||
const byte* SCREEN_DIST = malloc(1000);
|
||||
byte* SCREEN_DIST = malloc(1000);
|
||||
// Screen containing angle to center
|
||||
const byte* SCREEN_ANGLE= malloc(1000);
|
||||
byte* SCREEN_ANGLE= malloc(1000);
|
||||
// Screen containing angle to center
|
||||
const byte* SCREEN_FILL = 0x0400;
|
||||
|
||||
@ -70,15 +70,15 @@ void main() {
|
||||
const byte NUM_BUCKETS = 0x30;
|
||||
|
||||
// Array containing the bucket size for each of the distance buckets
|
||||
const byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte));
|
||||
byte* BUCKET_SIZES = malloc(NUM_BUCKETS*sizeof(byte));
|
||||
|
||||
// Buckets containing screen indices for each distance from the center.
|
||||
// BUCKETS[dist] is an array of words containing screen indices.
|
||||
// The size of the array BUCKETS[dist] is BUCKET_SIZES[dist]
|
||||
const word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*));
|
||||
word** BUCKETS = malloc(NUM_BUCKETS*sizeof(word*));
|
||||
|
||||
// Current index into each bucket. Used while populating the buckets. (After population the end the values will be equal to the bucket sizes)
|
||||
const byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte));
|
||||
byte* BUCKET_IDX = malloc(NUM_BUCKETS*sizeof(byte));
|
||||
|
||||
// Initialize buckets containing indices of chars on the screen with specific distances to the center.
|
||||
void init_buckets(byte* screen) {
|
||||
|
@ -6,9 +6,9 @@ import "atan2"
|
||||
|
||||
|
||||
// Screen containing distance to center
|
||||
const byte* SCREEN_DIST = malloc(1000);
|
||||
byte* SCREEN_DIST = malloc(1000);
|
||||
// Screen containing angle to center
|
||||
const byte* SCREEN_ANGLE = malloc(1000);
|
||||
byte* SCREEN_ANGLE = malloc(1000);
|
||||
// Screen containing angle to center
|
||||
const byte* SCREEN_FILL = 0x0400;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user