mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-09 21:37:31 +00:00
Working on support for inline constants with multiple potential types.
Improving fragment synthesis.
This commit is contained in:
parent
c8e3b36893
commit
ebb71b4130
2
.idea/compiler.xml
generated
2
.idea/compiler.xml
generated
@ -20,7 +20,7 @@
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel>
|
||||
<module name="kickc" target="1.7" />
|
||||
<module name="kickc" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -7,7 +7,7 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="false" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
|
4
pom.xml
4
pom.xml
@ -5,8 +5,8 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>1.7</maven.compiler.source>
|
||||
<maven.compiler.target>1.7</maven.compiler.target>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<groupId>dk.camelot64.kickc</groupId>
|
||||
|
@ -64,7 +64,7 @@ public class AsmFragment {
|
||||
public AsmParameter getBoundValue(String name) {
|
||||
Value boundValue = getBinding(name);
|
||||
if (boundValue == null) {
|
||||
throw new RuntimeException("Binding '" + name + "' not found in fragment " + name + ".asm");
|
||||
throw new RuntimeException("Binding '" + name + "' not found in fragment " + this.name + ".asm");
|
||||
}
|
||||
if (boundValue instanceof Variable) {
|
||||
Variable boundVar = (Variable) boundValue;
|
||||
@ -77,12 +77,12 @@ public class AsmFragment {
|
||||
} else if (boundValue instanceof ConstantVar) {
|
||||
ConstantVar constantVar = (ConstantVar) boundValue;
|
||||
String constantValueAsm = getAsmConstant(program, constantVar.getRef(), 99, codeScopeRef);
|
||||
boolean constantValueZp = SymbolTypeBasic.BYTE.equals(constantVar.getType(program.getScope()));
|
||||
boolean constantValueZp = SymbolType.BYTE.equals(constantVar.getType(program.getScope()));
|
||||
return new AsmParameter(constantValueAsm, constantValueZp);
|
||||
} else if (boundValue instanceof ConstantValue) {
|
||||
ConstantValue boundConst = (ConstantValue) boundValue;
|
||||
String constantValueAsm = getAsmConstant(program, boundConst, 99, codeScopeRef);
|
||||
boolean constantValueZp = SymbolTypeBasic.BYTE.equals(boundConst.getType(program.getScope()));
|
||||
boolean constantValueZp = SymbolType.BYTE.equals(boundConst.getType(program.getScope()));
|
||||
return new AsmParameter(constantValueAsm, constantValueZp);
|
||||
} else if (boundValue instanceof Label) {
|
||||
String param = ((Label) boundValue).getLocalName().replace('@', 'b').replace(':', '_').replace("$", "_");
|
||||
@ -363,7 +363,7 @@ public class AsmFragment {
|
||||
public AsmParameter visitAsmExprInt(KickCParser.AsmExprIntContext ctx) {
|
||||
Number number = NumberParser.parseLiteral(ctx.NUMBER().getText());
|
||||
ConstantInteger intVal = new ConstantInteger(number.intValue());
|
||||
boolean isZp = SymbolTypeBasic.BYTE.equals(intVal.getType());
|
||||
boolean isZp = SymbolType.BYTE.equals(intVal.getType());
|
||||
String param = getAsmNumber(number);
|
||||
return new AsmParameter(param, isZp);
|
||||
}
|
||||
|
@ -100,6 +100,17 @@ public class AsmFragmentManager {
|
||||
mapConst.put("cowo3", "cowo2");
|
||||
mapConst.put("coby2", "coby1");
|
||||
mapConst.put("coby3", "coby2");
|
||||
Map<String, String> mapZpptrToWord = new LinkedHashMap<>();
|
||||
mapZpptrToWord.put("zpptrby1", "zpwo1");
|
||||
mapZpptrToWord.put("zpptrby2", "zpwo2");
|
||||
mapZpptrToWord.put("zpptrby3", "zpwo3");
|
||||
Map<String, String> mapZpptrToWord2 = new LinkedHashMap<>();
|
||||
mapZpptrToWord2.put("zpwo1", "zpwo2");
|
||||
mapZpptrToWord2.put("zpptrby1", "zpwo1");
|
||||
Map<String, String> mapZpptrToWord3 = new LinkedHashMap<>();
|
||||
mapZpptrToWord3.put("zpwo1", "zpwo3");
|
||||
mapZpptrToWord3.put("zpptrby1", "zpwo1");
|
||||
mapZpptrToWord3.put("zpptrby2", "zpwo2");
|
||||
|
||||
List<FragmentSynthesis> synths = new ArrayList<>();
|
||||
|
||||
@ -162,6 +173,11 @@ public class AsmFragmentManager {
|
||||
synths.add(new FragmentSynthesis("(.*)_eq_(xs?by)_then_(.*)", ".*[ax]s?by.*_eq.*", null, "$2_eq_$1_then_$3", null, null));
|
||||
synths.add(new FragmentSynthesis("(.*)_eq_(ys?by)_then_(.*)", ".*[axy]s?by.*_eq.*", null, "$2_eq_$1_then_$3", null, null));
|
||||
|
||||
synths.add(new FragmentSynthesis("zpptrby1=(coby.|cowo.)_(sethi|setlo|plus|minus)_(.*)", ".*zpwo.*|.*=zpptr.*", null, "zpwo1=$1_$2_$3", null, mapZpptrToWord));
|
||||
synths.add(new FragmentSynthesis("zpptrby1=zpptrby([12])_(sethi|setlo|plus|minus)_(.*)", ".*zpwo.*", null, "zpwo1=zpwo$1_$2_$3", null, mapZpptrToWord));
|
||||
synths.add(new FragmentSynthesis("zpptrby1=zpptrby1_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby1_$1_zpwo1", null, mapZpptrToWord2));
|
||||
synths.add(new FragmentSynthesis("zpptrby1=zpptrby2_(sethi|setlo|plus|minus)_zpwo1", null, null, "zpptrby1=zpptrby2_$1_zpwo1", null, mapZpptrToWord3));
|
||||
|
||||
for (FragmentSynthesis synth : synths) {
|
||||
CharStream synthesized = synth.synthesize(signature, log);
|
||||
if (synthesized != null) {
|
||||
@ -176,6 +192,26 @@ public class AsmFragmentManager {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Bindings/mappings used when synthesizing one fragment from another fragment.
|
||||
* Eg. when synthesizing zpby1=zpby2_plus_zpby3 from aby=zpby1_plus_zpby2 the bindings (zpby2->zpby1, zpby3->zpby2) are used.
|
||||
* <p>
|
||||
* Often the same bindings are used in the signature-name and in the asm-code, but the bindings can be different.
|
||||
* Eg. when synthesizing zpptrby1=zpptrby2_plus_zpwo1 from zpwo1=zpwo2_plus_zpwo3 the bindings (zpptrby1->zpwo1, zpptrby2->zpwo2, zpwo1->zpwo3)
|
||||
* are used in the asm, but not in the signature.
|
||||
*/
|
||||
private static class FragmentBindings {
|
||||
|
||||
/** Bindings used for renaming in the sub-signature. */
|
||||
private Map<String, String> sigBindings;
|
||||
/** Bindings used for renaming in the assembler-code. */
|
||||
private Map<String, String> asmBindings;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* AsmFragment synthesis based on matching fragment signature and reusing another fragment with added prefix/postfix and some bind-mappings
|
||||
*/
|
||||
|
@ -283,52 +283,37 @@ public class AsmFragmentSignature {
|
||||
} else if (Registers.RegisterType.REG_ALU.equals(register.getType())) {
|
||||
throw new AsmFragment.AluNotApplicableException();
|
||||
}
|
||||
} else if (value instanceof ConstantVar) {
|
||||
ConstantVar constantVar = (ConstantVar) value;
|
||||
SymbolType constType = constantVar.getType();
|
||||
|
||||
if (SymbolTypeBasic.BYTE.equals(constType)) {
|
||||
String name = "coby" + nextConstByteIdx++;
|
||||
bindings.put(name, constantVar);
|
||||
return name;
|
||||
} else if (SymbolTypeBasic.WORD.equals(constType)) {
|
||||
String name = "cowo" + nextConstByteIdx++;
|
||||
bindings.put(name, constantVar);
|
||||
return name;
|
||||
} else if (constType instanceof SymbolTypePointer && SymbolTypeBasic.BYTE.equals(((SymbolTypePointer) constType).getElementType())) {
|
||||
String name = "cowo" + nextConstByteIdx++;
|
||||
bindings.put(name, constantVar);
|
||||
return name;
|
||||
} else if (value instanceof ConstantVar || value instanceof ConstantValue) {
|
||||
SymbolType constType;
|
||||
if (value instanceof ConstantVar) {
|
||||
constType = ((ConstantVar) value).getType();
|
||||
} else if(value instanceof ConstantValue) {
|
||||
constType = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value);
|
||||
} else {
|
||||
throw new RuntimeException("Unhandled constant type " + constType);
|
||||
throw new RuntimeException("Unhandled constant type " + value);
|
||||
}
|
||||
} else if (value instanceof ConstantInteger) {
|
||||
ConstantInteger intValue = (ConstantInteger) value;
|
||||
if (SymbolTypeBasic.BYTE.equals(intValue.getType(program.getScope()))) {
|
||||
if (SymbolType.BYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isByte())) {
|
||||
String name = "coby" + nextConstByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else if (SymbolTypeBasic.WORD.equals(intValue.getType(program.getScope()))) {
|
||||
} else if (SymbolType.WORD.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isWord())) {
|
||||
String name = "cowo" + nextConstByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
}
|
||||
} else if (value instanceof ConstantValue) {
|
||||
SymbolType type = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value);
|
||||
if (SymbolTypeBasic.BYTE.equals(type)) {
|
||||
String name = "coby" + nextConstByteIdx++;
|
||||
} else if (SymbolType.SBYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSByte())) {
|
||||
String name = "cosby" + nextConstByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else if (SymbolTypeBasic.WORD.equals(type)) {
|
||||
String name = "cowo" + nextConstByteIdx++;
|
||||
} else if (SymbolType.SWORD.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSWord())) {
|
||||
String name = "coswo" + nextConstByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else if (type instanceof SymbolTypePointer) {
|
||||
} else if (constType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) constType).getElementType())) {
|
||||
String name = "cowo" + nextConstByteIdx++;
|
||||
bindings.put(name, value);
|
||||
return name;
|
||||
} else {
|
||||
throw new RuntimeException("Unhandled constant type " + type);
|
||||
throw new RuntimeException("Unhandled constant type " + constType);
|
||||
}
|
||||
} else if (value instanceof Label) {
|
||||
String name = "la" + nextLabelIdx++;
|
||||
|
@ -0,0 +1 @@
|
||||
lda {zpwo1}
|
@ -1,3 +0,0 @@
|
||||
sta {zpptrby1}+1
|
||||
lda #<{coby1}
|
||||
sta {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
stx {zpptrby1}+1
|
||||
ldx #<{coby1}
|
||||
stx {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
sty {zpptrby1}+1
|
||||
ldy #<{coby1}
|
||||
sty {zpptrby1}
|
@ -1,4 +0,0 @@
|
||||
lda #<{coby1}
|
||||
sta {zpptrby1}
|
||||
lda {zpby1}
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
sta {zpptrby1}+1
|
||||
lda #<{cowo1}
|
||||
sta {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
stx {zpptrby1}+1
|
||||
ldx #<{cowo1}
|
||||
stx {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
sty {zpptrby1}+1
|
||||
ldy #<{cowo1}
|
||||
sty {zpptrby1}
|
@ -1,4 +0,0 @@
|
||||
lda #<{cowo1}
|
||||
sta {zpptrby1}
|
||||
lda {zpby1}
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
sta {zpptrby1}
|
||||
lda #>{cowo1}
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
stx {zpptrby1}
|
||||
lda #>{cowo1}
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
sty {zpptrby1}
|
||||
lda #>{cowo1}
|
||||
sta {zpptrby1}+1
|
@ -1,4 +0,0 @@
|
||||
lda {zpby1}
|
||||
sta {zpptrby1}
|
||||
lda #>{cowo1}
|
||||
sta {zpptrby1}+1
|
@ -1 +0,0 @@
|
||||
sta {zpptrby1}+1
|
@ -1 +0,0 @@
|
||||
stx {zpptrby1}+1
|
@ -1 +0,0 @@
|
||||
sty {zpptrby1}+1
|
@ -1 +0,0 @@
|
||||
sta {zpptrby1}
|
@ -1 +0,0 @@
|
||||
stx {zpptrby1}
|
@ -1 +0,0 @@
|
||||
sty {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
sta {zpptrby1}+1
|
||||
lda {zpptrby2}
|
||||
sta {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
stx {zpptrby1}+1
|
||||
lda {zpptrby2}
|
||||
sta {zpptrby1}
|
@ -1,3 +0,0 @@
|
||||
sty {zpptrby1}+1
|
||||
lda {zpptrby2}
|
||||
sta {zpptrby1}
|
@ -1,4 +0,0 @@
|
||||
lda {zpptrby2}
|
||||
sta {zpptrby1}
|
||||
lda {zpby1}
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
sta {zpptrby1}
|
||||
lda {zpptrby2}+1
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
stx {zpptrby1}
|
||||
lda {zpptrby2}+1
|
||||
sta {zpptrby1}+1
|
@ -1,3 +0,0 @@
|
||||
sty {zpptrby1}
|
||||
lda {zpptrby2}+1
|
||||
sta {zpptrby1}+1
|
@ -1,4 +0,0 @@
|
||||
lda {zpby1}
|
||||
sta {zpptrby1}
|
||||
lda {zpptrby2}+1
|
||||
sta {zpptrby1}+1
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}
|
||||
lda #0
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}+1
|
||||
lda #<{coby1}
|
||||
sta {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
stx {zpwo1}+1
|
||||
ldx #<{coby1}
|
||||
stx {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
sty {zpwo1}+1
|
||||
ldy #<{coby1}
|
||||
sty {zpwo1}
|
@ -0,0 +1,4 @@
|
||||
lda #<{coby1}
|
||||
sta {zpwo1}
|
||||
lda {zpby1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,7 @@
|
||||
clc
|
||||
adc #<{cowo1}
|
||||
sta {zpwo1}
|
||||
lda #>{cowo1}
|
||||
adc #0
|
||||
sta {zpwo1}+1
|
||||
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}+1
|
||||
lda #<{cowo1}
|
||||
sta {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
stx {zpwo1}+1
|
||||
ldx #<{cowo1}
|
||||
stx {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
sty {zpwo1}+1
|
||||
ldy #<{cowo1}
|
||||
sty {zpwo1}
|
@ -0,0 +1,4 @@
|
||||
lda #<{cowo1}
|
||||
sta {zpwo1}
|
||||
lda {zpby1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}
|
||||
lda #>{cowo1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
stx {zpwo1}
|
||||
lda #>{cowo1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
sty {zpwo1}
|
||||
lda #>{cowo1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,4 @@
|
||||
lda {zpby1}
|
||||
sta {zpwo1}
|
||||
lda #>{cowo1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,7 @@
|
||||
lda {zpwo1}
|
||||
sec
|
||||
sbc {zpwo2}
|
||||
sta {zpwo1}
|
||||
lda {zpwo1}+1
|
||||
sbc {zpwo2}+1
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,6 @@
|
||||
clc
|
||||
adc {zpwo1}
|
||||
sta {zpwo1}
|
||||
bcc !+
|
||||
inc {zpwo1}+1
|
||||
!:
|
@ -0,0 +1,8 @@
|
||||
lda {zpwo1}
|
||||
clc
|
||||
adc {zpwo2}
|
||||
sta {zpwo1}
|
||||
lda {zpwo1}+1
|
||||
adc {zpwo2}+1
|
||||
sta {zpwo1}+1
|
||||
|
@ -0,0 +1 @@
|
||||
sta {zpwo1}+1
|
@ -0,0 +1 @@
|
||||
stx {zpwo1}+1
|
@ -0,0 +1 @@
|
||||
sty {zpwo1}+1
|
@ -0,0 +1 @@
|
||||
sta {zpwo1}
|
@ -0,0 +1 @@
|
||||
stx {zpwo1}
|
@ -0,0 +1 @@
|
||||
sty {zpwo1}
|
@ -0,0 +1,7 @@
|
||||
lda {zpwo2}
|
||||
sec
|
||||
sbc {zpwo3}
|
||||
sta {zpwo1}
|
||||
lda {zpwo2}+1
|
||||
sbc {zpwo3}+1
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,8 @@
|
||||
lda {zpwo1}
|
||||
clc
|
||||
adc {zpwo2}
|
||||
sta {zpwo3}
|
||||
lda {zpwo1}+1
|
||||
adc {zpwo2}+1
|
||||
sta {zpwo3}+1
|
||||
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}+1
|
||||
lda {zpwo2}
|
||||
sta {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
stx {zpwo1}+1
|
||||
lda {zpwo2}
|
||||
sta {zpwo1}
|
@ -0,0 +1,3 @@
|
||||
sty {zpwo1}+1
|
||||
lda {zpwo2}
|
||||
sta {zpwo1}
|
@ -0,0 +1,4 @@
|
||||
lda {zpwo2}
|
||||
sta {zpwo1}
|
||||
lda {zpby1}
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
sta {zpwo1}
|
||||
lda {zpwo2}+1
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
stx {zpwo1}
|
||||
lda {zpwo2}+1
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,3 @@
|
||||
sty {zpwo1}
|
||||
lda {zpwo2}+1
|
||||
sta {zpwo1}+1
|
@ -0,0 +1,4 @@
|
||||
lda {zpby1}
|
||||
sta {zpwo1}
|
||||
lda {zpwo2}+1
|
||||
sta {zpwo1}+1
|
@ -13,7 +13,7 @@ public class ConstantBool implements ConstantValue {
|
||||
|
||||
@Override
|
||||
public SymbolType getType(ProgramScope scope) {
|
||||
return SymbolTypeBasic.BOOLEAN;
|
||||
return SymbolType.BOOLEAN;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,7 @@ public class ConstantChar implements ConstantValue {
|
||||
|
||||
@Override
|
||||
public SymbolType getType(ProgramScope scope) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
|
||||
public Character getValue() {
|
||||
@ -30,7 +30,7 @@ public class ConstantChar implements ConstantValue {
|
||||
if (program == null) {
|
||||
return "'" + value + "'";
|
||||
} else {
|
||||
return "(" + SymbolTypeBasic.BYTE.getTypeName() + ") " + "'" + value + "'";
|
||||
return "(" + SymbolType.BYTE.getTypeName() + ") " + "'" + value + "'";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,7 +13,7 @@ public class ConstantDouble implements ConstantValue {
|
||||
|
||||
@Override
|
||||
public SymbolType getType(ProgramScope scope) {
|
||||
return SymbolTypeBasic.DOUBLE;
|
||||
return SymbolType.DOUBLE;
|
||||
}
|
||||
|
||||
public Double getNumber() {
|
||||
@ -30,7 +30,7 @@ public class ConstantDouble implements ConstantValue {
|
||||
if(program ==null) {
|
||||
return Double.toString(number);
|
||||
} else {
|
||||
return "(" + SymbolTypeBasic.VOID.getTypeName() + ") " + Double.toString(number);
|
||||
return "(" + SymbolType.VOID.getTypeName() + ") " + Double.toString(number);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/** SSA form constant integer value */
|
||||
public class ConstantInteger implements ConstantValue {
|
||||
|
||||
@ -25,13 +27,14 @@ public class ConstantInteger implements ConstantValue {
|
||||
}
|
||||
|
||||
public SymbolType getType() {
|
||||
SymbolType type;
|
||||
if (getNumber() < 256) {
|
||||
type = SymbolTypeBasic.BYTE;
|
||||
} else {
|
||||
type = SymbolTypeBasic.WORD;
|
||||
ArrayList<SymbolTypeInteger> potentialTypes = new ArrayList<>();
|
||||
Integer number = getNumber();
|
||||
for (SymbolTypeInteger typeInteger : SymbolType.getIntegerTypes()) {
|
||||
if(number>=typeInteger.getMinValue() && number<= typeInteger.getMaxValue()) {
|
||||
potentialTypes.add(typeInteger);
|
||||
}
|
||||
}
|
||||
return type;
|
||||
return new SymbolTypeInline(potentialTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,7 @@ public class ConstantString implements ConstantValue {
|
||||
|
||||
@Override
|
||||
public SymbolType getType(ProgramScope scope) {
|
||||
return SymbolTypeBasic.STRING;
|
||||
return SymbolType.STRING;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
@ -30,7 +30,7 @@ public class ConstantString implements ConstantValue {
|
||||
if (program == null) {
|
||||
return "\"" + value + "\"";
|
||||
} else {
|
||||
return "(" + SymbolTypeBasic.STRING.getTypeName() + ") " + "\"" + value + "\"";
|
||||
return "(" + SymbolType.STRING.getTypeName() + ") " + "\"" + value + "\"";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,95 @@
|
||||
package dk.camelot64.kickc.model;
|
||||
|
||||
/** Can calculate the exact value for constants (used for type inference).*/
|
||||
public class ConstantValueCalculator {
|
||||
|
||||
|
||||
private static ConstantValue calcValue(ProgramScope programScope, ConstantValue value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return value;
|
||||
} else if(value instanceof ConstantString) {
|
||||
return value;
|
||||
} else if(value instanceof ConstantChar) {
|
||||
ConstantChar charValue = (ConstantChar) value;
|
||||
return new ConstantInteger((int)charValue.getValue());
|
||||
} else if(value instanceof ConstantRef) {
|
||||
ConstantVar constantVar = programScope.getConstant((ConstantRef) value);
|
||||
ConstantValue constantVarValue = constantVar.getValue();
|
||||
return calcValue(programScope, constantVarValue);
|
||||
} else if(value instanceof ConstantUnary) {
|
||||
ConstantUnary unary = (ConstantUnary) value;
|
||||
return calcValue(programScope, unary.getOperator(), unary.getOperand());
|
||||
} else if(value instanceof ConstantBinary) {
|
||||
ConstantBinary binary = (ConstantBinary) value;
|
||||
return calcValue(programScope, binary.getLeft(), binary.getOperator(), binary.getRight());
|
||||
} else {
|
||||
throw new RuntimeException("Unknown constant value "+value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static ConstantValue calcValue(ProgramScope programScope, Operator operator, ConstantValue value) {
|
||||
if(operator.equals(Operator.NEG)) {
|
||||
return neg(calcValue(programScope, value));
|
||||
} else if(operator.equals(Operator.POS)) {
|
||||
return pos(calcValue(programScope, value));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ConstantValue calcValue(ProgramScope programScope, ConstantValue value1, Operator operator, ConstantValue value2) {
|
||||
if(operator.equals(Operator.MULTIPLY)) {
|
||||
return multiply(calcValue(programScope, value1), calcValue(programScope, value2));
|
||||
} else if(operator.equals(Operator.PLUS)) {
|
||||
return plus(calcValue(programScope, value1), calcValue(programScope, value2));
|
||||
} else if(operator.equals(Operator.MINUS)) {
|
||||
return minus(calcValue(programScope, value1), calcValue(programScope, value2));
|
||||
} else if(operator.equals(Operator.DIVIDE)) {
|
||||
return div(calcValue(programScope, value1), calcValue(programScope, value2));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue neg(ConstantValue value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantInteger(-((ConstantInteger) value).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue pos(ConstantValue value) {
|
||||
if(value instanceof ConstantInteger) {
|
||||
return new ConstantInteger(+((ConstantInteger) value).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue multiply(ConstantValue value1, ConstantValue value2) {
|
||||
if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) {
|
||||
return new ConstantInteger(((ConstantInteger) value1).getNumber()*((ConstantInteger) value2).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue plus(ConstantValue value1, ConstantValue value2) {
|
||||
if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) {
|
||||
return new ConstantInteger(((ConstantInteger) value1).getNumber()+((ConstantInteger) value2).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue minus(ConstantValue value1, ConstantValue value2) {
|
||||
if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) {
|
||||
return new ConstantInteger(((ConstantInteger) value1).getNumber()-((ConstantInteger) value2).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ConstantValue div(ConstantValue value1, ConstantValue value2) {
|
||||
if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) {
|
||||
return new ConstantInteger(((ConstantInteger) value1).getNumber()/((ConstantInteger) value2).getNumber());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -65,7 +65,7 @@ public class Label implements Symbol {
|
||||
|
||||
@JsonIgnore
|
||||
public SymbolType getType() {
|
||||
return SymbolTypeBasic.LABEL;
|
||||
return SymbolType.LABEL;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -70,9 +70,9 @@ public class Operator {
|
||||
public static Operator getUnary(String op) {
|
||||
switch (op) {
|
||||
case "+":
|
||||
return UNARY_PLUS;
|
||||
return POS;
|
||||
case "-":
|
||||
return UNARY_MINUS;
|
||||
return NEG;
|
||||
case "++":
|
||||
return INCREMENT;
|
||||
case "--":
|
||||
@ -93,13 +93,13 @@ public class Operator {
|
||||
}
|
||||
|
||||
public static Operator getCastUnary(SymbolType castType) {
|
||||
if (SymbolTypeBasic.BYTE.equals(castType)) {
|
||||
if (SymbolType.BYTE.equals(castType)) {
|
||||
return CAST_BYTE;
|
||||
} else if (SymbolTypeBasic.SBYTE.equals(castType)) {
|
||||
} else if (SymbolType.SBYTE.equals(castType)) {
|
||||
return CAST_SBYTE;
|
||||
} else if (SymbolTypeBasic.WORD.equals(castType)) {
|
||||
} else if (SymbolType.WORD.equals(castType)) {
|
||||
return CAST_WORD;
|
||||
} else if (SymbolTypeBasic.SWORD.equals(castType)) {
|
||||
} else if (SymbolType.SWORD.equals(castType)) {
|
||||
return CAST_SWORD;
|
||||
} else {
|
||||
throw new RuntimeException("Unknown cast type " + castType);
|
||||
@ -113,8 +113,8 @@ public class Operator {
|
||||
|
||||
public static final Operator INCREMENT = new Operator("++", "_inc_", Type.UNARY, 1);
|
||||
public static final Operator DECREMENT = new Operator("--", "_dec_", Type.UNARY, 1);
|
||||
public static final Operator UNARY_PLUS = new Operator("+", "_pos_", Type.UNARY, 2);
|
||||
public static final Operator UNARY_MINUS = new Operator("-", "_neg_", Type.UNARY, 2);
|
||||
public static final Operator POS = new Operator("+", "_pos_", Type.UNARY, 2);
|
||||
public static final Operator NEG = new Operator("-", "_neg_", Type.UNARY, 2);
|
||||
public static final Operator BOOL_NOT = new Operator("~", "_not_", Type.UNARY, 2);
|
||||
public static final Operator NOT = new Operator("!", "_not_", Type.UNARY, 2);
|
||||
public static final Operator DEREF = new Operator("*", "_deref_", Type.UNARY, 2);
|
||||
|
@ -41,6 +41,7 @@ public class Registers {
|
||||
ZP_BYTE, ZP_SBYTE,
|
||||
ZP_PTR_BYTE,
|
||||
ZP_WORD,
|
||||
ZP_SWORD,
|
||||
ZP_BOOL,
|
||||
CONSTANT
|
||||
}
|
||||
@ -147,6 +148,21 @@ public class Registers {
|
||||
|
||||
}
|
||||
|
||||
/** Two zero page addresses used as a register for a single signed word variable. */
|
||||
public static class RegisterZpSWord extends RegisterZp {
|
||||
|
||||
public RegisterZpSWord(int zp) {
|
||||
super(zp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegisterType getType() {
|
||||
return RegisterType.ZP_SWORD;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** A zero page address used as a register for a boolean variable. */
|
||||
public static class RegisterZpBool extends RegisterZp {
|
||||
|
||||
|
@ -113,7 +113,7 @@ public abstract class Scope implements Symbol {
|
||||
|
||||
public VariableIntermediate addVariableIntermediate() {
|
||||
String name = "$" + intermediateVarCount++;
|
||||
VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolTypeBasic.VAR);
|
||||
VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolType.VAR);
|
||||
add(symbol);
|
||||
return symbol;
|
||||
}
|
||||
|
@ -1,18 +1,127 @@
|
||||
package dk.camelot64.kickc.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
/** Symbol Types */
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@type")
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = SymbolTypeProgram.class, name = "program"),
|
||||
@JsonSubTypes.Type(value = SymbolTypeBasic.class, name = "basic"),
|
||||
@JsonSubTypes.Type(value = SymbolTypeArray.class, name = "array"),
|
||||
@JsonSubTypes.Type(value = SymbolTypePointer.class, name = "pointer"),
|
||||
@JsonSubTypes.Type(value = SymbolTypeProcedure.class, name = "procedure")
|
||||
})
|
||||
public interface SymbolType {
|
||||
public String getTypeName();
|
||||
|
||||
/** Unsigned byte (8 bits)). */
|
||||
SymbolTypeInteger BYTE = new SymbolTypeInteger("byte", 0, 255);
|
||||
/** Signed byte (8 bits). */
|
||||
SymbolTypeInteger SBYTE = new SymbolTypeInteger("signed byte", -128, 127);
|
||||
/** Unsigned word (2 bytes, 16 bits). */
|
||||
SymbolTypeInteger WORD = new SymbolTypeInteger("word", 0, 65_535);
|
||||
/** Signed word (2 bytes, 16 bits). */
|
||||
SymbolTypeInteger SWORD = new SymbolTypeInteger("signed word", -32_768, 32_767);
|
||||
/** String value (treated like byte* ). */
|
||||
SymbolTypeBasic STRING = new SymbolTypeBasic("string");
|
||||
/** Boolean value. */
|
||||
SymbolTypeBasic BOOLEAN = new SymbolTypeBasic("boolean");
|
||||
/** Numeric floating point value. */
|
||||
SymbolTypeBasic DOUBLE = new SymbolTypeBasic("double");
|
||||
/** A label. Name of functions of jump-targets. */
|
||||
SymbolTypeBasic LABEL = new SymbolTypeBasic("label");
|
||||
/** Void type representing no value. */
|
||||
SymbolTypeBasic VOID = new SymbolTypeBasic("void");
|
||||
/** An unresolved type. Will be infered later. */
|
||||
SymbolTypeBasic VAR = new SymbolTypeBasic("var");
|
||||
|
||||
/**
|
||||
* Get the name of the type
|
||||
* @return The type name
|
||||
*/
|
||||
String getTypeName();
|
||||
|
||||
/**
|
||||
* Get a simple symbol type from the type name.
|
||||
* @param name The type name.
|
||||
* @return The simple symbol type
|
||||
*/
|
||||
static SymbolType get(String name) {
|
||||
switch (name) {
|
||||
case "byte": return BYTE;
|
||||
case "signed byte": return SBYTE;
|
||||
case "word": return WORD;
|
||||
case "signed word": return SWORD;
|
||||
case "string": return STRING;
|
||||
case "boolean": return BOOLEAN;
|
||||
case "void": return VOID;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all integer types.
|
||||
* @return All integeer types
|
||||
*/
|
||||
static Collection<SymbolTypeInteger> getIntegerTypes() {
|
||||
ArrayList<SymbolTypeInteger> types = new ArrayList<>();
|
||||
types.add(BYTE);
|
||||
types.add(SBYTE);
|
||||
types.add(WORD);
|
||||
types.add(SWORD);
|
||||
return types;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the type {@link #BYTE} or compatible {@link SymbolTypeInline}
|
||||
* @param type The type to examine
|
||||
* @return true if the type is BYTE compatible
|
||||
*/
|
||||
static boolean isByte(SymbolType type) {
|
||||
if(BYTE.equals(type)) {
|
||||
return true;
|
||||
} else if(type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isByte();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the type {@link #SBYTE} or compatible {@link SymbolTypeInline}
|
||||
* @param type The type to examine
|
||||
* @return true if the type is SBYTE compatible
|
||||
*/
|
||||
static boolean isSByte(SymbolType type) {
|
||||
if(SBYTE.equals(type)) {
|
||||
return true;
|
||||
} else if(type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isSByte();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the type {@link #WORD} or compatible {@link SymbolTypeInline}
|
||||
* @param type The type to examine
|
||||
* @return true if the type is WORD compatible
|
||||
*/
|
||||
static boolean isWord(SymbolType type) {
|
||||
if(WORD.equals(type)) {
|
||||
return true;
|
||||
} else if(type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isWord();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the type {@link #SWORD} or compatible {@link SymbolTypeInline}
|
||||
* @param type The type to examine
|
||||
* @return true if the type is SWORD compatible
|
||||
*/
|
||||
static boolean isSWord(SymbolType type) {
|
||||
if(SWORD.equals(type)) {
|
||||
return true;
|
||||
} else if(type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isSWord();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,32 +1,11 @@
|
||||
package dk.camelot64.kickc.model;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/** Basic Symbol Types */
|
||||
public class SymbolTypeBasic implements SymbolType {
|
||||
|
||||
public static final SymbolTypeBasic BYTE = new SymbolTypeBasic("byte");
|
||||
public static final SymbolTypeBasic SBYTE = new SymbolTypeBasic("signed byte");
|
||||
|
||||
public static final SymbolTypeBasic WORD = new SymbolTypeBasic("word");
|
||||
public static final SymbolTypeBasic SWORD = new SymbolTypeBasic("signed word");
|
||||
|
||||
public static final SymbolTypeBasic STRING = new SymbolTypeBasic("string");
|
||||
public static final SymbolTypeBasic BOOLEAN = new SymbolTypeBasic("boolean");
|
||||
public static final SymbolTypeBasic DOUBLE = new SymbolTypeBasic("double");
|
||||
// A label
|
||||
public static final SymbolTypeBasic LABEL = new SymbolTypeBasic("label");
|
||||
// Void type.
|
||||
public static final SymbolTypeBasic VOID = new SymbolTypeBasic("void");
|
||||
// Unresolved type. Will be infered later
|
||||
public static final SymbolTypeBasic VAR = new SymbolTypeBasic("var");
|
||||
|
||||
private String typeName;
|
||||
|
||||
@JsonCreator
|
||||
SymbolTypeBasic(
|
||||
@JsonProperty("typeName") String typeName) {
|
||||
SymbolTypeBasic(String typeName) {
|
||||
this.typeName = typeName;
|
||||
}
|
||||
|
||||
@ -34,19 +13,6 @@ public class SymbolTypeBasic implements SymbolType {
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public static SymbolTypeBasic get(String name) {
|
||||
switch (name) {
|
||||
case "byte": return BYTE;
|
||||
case "signed byte": return SBYTE;
|
||||
case "word": return WORD;
|
||||
case "signed word": return SWORD;
|
||||
case "string": return STRING;
|
||||
case "boolean": return BOOLEAN;
|
||||
case "void": return VOID;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
|
@ -5,6 +5,39 @@ package dk.camelot64.kickc.model;
|
||||
*/
|
||||
public class SymbolTypeInference {
|
||||
|
||||
|
||||
/**
|
||||
* Infer the type of a unary operator on a value
|
||||
*
|
||||
* @param programScope The program scope usable for accessing the symbol table
|
||||
* @param operator The unary operator
|
||||
* @param rValue The value
|
||||
* @return The type of the resulting value
|
||||
*/
|
||||
public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) {
|
||||
if (rValue instanceof ConstantValue) {
|
||||
ConstantValue value = ConstantValueCalculator.calcValue(programScope, operator, (ConstantValue) rValue);
|
||||
if (value != null) {
|
||||
return value.getType(programScope);
|
||||
}
|
||||
}
|
||||
SymbolType valueType = inferType(programScope, rValue);
|
||||
return inferType(operator, valueType);
|
||||
}
|
||||
|
||||
public static SymbolType inferType(ProgramScope programScope, RValue rValue1, Operator operator, RValue rValue2) {
|
||||
if (rValue1 instanceof ConstantValue && rValue2 instanceof ConstantValue) {
|
||||
ConstantValue value = ConstantValueCalculator.calcValue(programScope, (ConstantValue) rValue1, operator, (ConstantValue) rValue2);
|
||||
if (value != null) {
|
||||
return value.getType(programScope);
|
||||
}
|
||||
}
|
||||
SymbolType valueType1 = inferType(programScope, rValue1);
|
||||
SymbolType valueType2 = inferType(programScope, rValue2);
|
||||
return inferType(valueType1, operator, valueType2);
|
||||
}
|
||||
|
||||
|
||||
public static SymbolType inferType(Operator operator, SymbolType subType) {
|
||||
if (operator == null) {
|
||||
return subType;
|
||||
@ -16,21 +49,21 @@ public class SymbolTypeInference {
|
||||
throw new RuntimeException("Type error: Dereferencing a non-pointer " + subType);
|
||||
}
|
||||
} else if (Operator.LOWBYTE.equals(operator)) {
|
||||
if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
} else if (Operator.HIBYTE.equals(operator)) {
|
||||
if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
} else if (Operator.CAST_BYTE.equals(operator)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
return SymbolType.BYTE;
|
||||
} else if (Operator.CAST_SBYTE.equals(operator)) {
|
||||
return SymbolTypeBasic.SBYTE;
|
||||
return SymbolType.SBYTE;
|
||||
} else if (Operator.CAST_WORD.equals(operator)) {
|
||||
return SymbolTypeBasic.WORD;
|
||||
return SymbolType.WORD;
|
||||
} else if (Operator.CAST_SWORD.equals(operator)) {
|
||||
return SymbolTypeBasic.SWORD;
|
||||
return SymbolType.SWORD;
|
||||
} else {
|
||||
return subType;
|
||||
}
|
||||
@ -38,6 +71,14 @@ public class SymbolTypeInference {
|
||||
}
|
||||
|
||||
public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) {
|
||||
|
||||
if (operator.equals(Operator.PLUS)) {
|
||||
return inferPlus(type1, type2);
|
||||
} else if (operator.equals(Operator.MINUS)) {
|
||||
return inferMinus(type1, type2);
|
||||
}
|
||||
|
||||
|
||||
String op = operator.getOperator();
|
||||
switch (op) {
|
||||
case "==":
|
||||
@ -53,41 +94,17 @@ public class SymbolTypeInference {
|
||||
case "||":
|
||||
case "and":
|
||||
case "or":
|
||||
return SymbolTypeBasic.BOOLEAN;
|
||||
case "+":
|
||||
if (type1.equals(SymbolTypeBasic.STRING) && SymbolTypeBasic.BYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.STRING;
|
||||
} else if (type1.equals(SymbolTypeBasic.STRING) && SymbolTypeBasic.STRING.equals(type2)) {
|
||||
return SymbolTypeBasic.STRING;
|
||||
}
|
||||
case "-":
|
||||
// Also continues "+"
|
||||
if (type1 instanceof SymbolTypePointer && (type2.equals(SymbolTypeBasic.BYTE) || type2.equals(SymbolTypeBasic.WORD))) {
|
||||
return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType());
|
||||
}
|
||||
if (type1 instanceof SymbolTypePointer && type2 instanceof SymbolTypePointer) {
|
||||
SymbolType elmType1 = ((SymbolTypePointer) type1).getElementType();
|
||||
SymbolType elmType2 = ((SymbolTypePointer) type2).getElementType();
|
||||
return inferType(elmType1, operator, elmType2);
|
||||
}
|
||||
if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) {
|
||||
return SymbolTypeBasic.WORD;
|
||||
} else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
} else if (SymbolTypeBasic.SBYTE.equals(type1) && SymbolTypeBasic.SBYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.SBYTE;
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||
return SymbolType.BOOLEAN;
|
||||
case "*":
|
||||
if (type1 == null && type2 instanceof SymbolTypePointer) {
|
||||
return ((SymbolTypePointer) type2).getElementType();
|
||||
}
|
||||
if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) {
|
||||
return SymbolTypeBasic.WORD;
|
||||
} else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
} else if (SymbolTypeBasic.SBYTE.equals(type1) && SymbolTypeBasic.SBYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.SBYTE;
|
||||
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
|
||||
return SymbolType.WORD;
|
||||
} else if (isByte(type1) && isByte(type2)) {
|
||||
return SymbolType.BYTE;
|
||||
} else if (SymbolType.SBYTE.equals(type1) && SymbolType.SBYTE.equals(type2)) {
|
||||
return SymbolType.SBYTE;
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||
case "*idx":
|
||||
@ -96,25 +113,25 @@ public class SymbolTypeInference {
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||
case "/":
|
||||
if (type1 instanceof SymbolTypePointer && SymbolTypeBasic.BYTE.equals(type2)) {
|
||||
if (type1 instanceof SymbolTypePointer && isByte(type2)) {
|
||||
return type1;
|
||||
}
|
||||
case "&":
|
||||
case "|":
|
||||
case "^":
|
||||
if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) {
|
||||
return SymbolTypeBasic.WORD;
|
||||
} else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
|
||||
return SymbolType.WORD;
|
||||
} else if (isByte(type1) && isByte(type2)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||
case "<<":
|
||||
case ">>":
|
||||
if (SymbolTypeBasic.WORD.equals(type1)) {
|
||||
return SymbolTypeBasic.WORD;
|
||||
} else if (SymbolTypeBasic.BYTE.equals(type1)) {
|
||||
return SymbolTypeBasic.BYTE;
|
||||
if (SymbolType.WORD.equals(type1)) {
|
||||
return SymbolType.WORD;
|
||||
} else if (isByte(type1)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||
default:
|
||||
@ -122,6 +139,110 @@ public class SymbolTypeInference {
|
||||
}
|
||||
}
|
||||
|
||||
private static SymbolType inferPlus(SymbolType type1, SymbolType type2) {
|
||||
if (type1.equals(SymbolType.STRING) && isByte(type2)) {
|
||||
return SymbolType.STRING;
|
||||
} else if (type1.equals(SymbolType.STRING) && SymbolType.STRING.equals(type2)) {
|
||||
return SymbolType.STRING;
|
||||
}
|
||||
if (type1 instanceof SymbolTypePointer && isInteger(type2)) {
|
||||
return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType());
|
||||
}
|
||||
if (isByte(type1) && isByte(type2)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
if (isSByte(type1) && isSByte(type2)) {
|
||||
return SymbolType.SBYTE;
|
||||
}
|
||||
if (isWord(type1) && isWord(type2)) {
|
||||
return SymbolType.WORD;
|
||||
}
|
||||
if (isSWord(type1) && isSWord(type2)) {
|
||||
return SymbolType.SWORD;
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2);
|
||||
}
|
||||
|
||||
private static SymbolType inferMinus(SymbolType type1, SymbolType type2) {
|
||||
if (type1 instanceof SymbolTypePointer && isInteger(type2)) {
|
||||
return new SymbolTypePointer(((SymbolTypePointer) type1).getElementType());
|
||||
}
|
||||
if (type1 instanceof SymbolTypePointer && type2 instanceof SymbolTypePointer) {
|
||||
return SymbolType.WORD;
|
||||
}
|
||||
if (isByte(type1) && isByte(type2)) {
|
||||
return SymbolType.BYTE;
|
||||
}
|
||||
if (isSByte(type1) && isSByte(type2)) {
|
||||
return SymbolType.SBYTE;
|
||||
}
|
||||
if (isWord(type1) && isWord(type2)) {
|
||||
return SymbolType.WORD;
|
||||
}
|
||||
if (isSWord(type1) && isSWord(type2)) {
|
||||
return SymbolType.SWORD;
|
||||
}
|
||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + "+" + " " + type2);
|
||||
}
|
||||
|
||||
|
||||
private static boolean isInteger(SymbolType type) {
|
||||
if (SymbolType.BYTE.equals(type)) {
|
||||
return true;
|
||||
} else if (SymbolType.WORD.equals(type)) {
|
||||
return true;
|
||||
} else if (SymbolType.SBYTE.equals(type)) {
|
||||
return true;
|
||||
} else if (SymbolType.SWORD.equals(type)) {
|
||||
return true;
|
||||
} else if (type instanceof SymbolTypeInline) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isByte(SymbolType type) {
|
||||
if (SymbolType.BYTE.equals(type)) {
|
||||
return true;
|
||||
} else if (type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isByte();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isSByte(SymbolType type) {
|
||||
if (SymbolType.SBYTE.equals(type)) {
|
||||
return true;
|
||||
} else if (type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isSByte();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isWord(SymbolType type) {
|
||||
if (SymbolType.WORD.equals(type)) {
|
||||
return true;
|
||||
} else if (type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isWord();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isSWord(SymbolType type) {
|
||||
if (SymbolType.SWORD.equals(type)) {
|
||||
return true;
|
||||
} else if (type instanceof SymbolTypeInline) {
|
||||
return ((SymbolTypeInline) type).isSWord();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static SymbolType inferType(ProgramScope programScope, RValue rValue) {
|
||||
SymbolType type = null;
|
||||
if (rValue instanceof VariableRef) {
|
||||
@ -137,11 +258,11 @@ public class SymbolTypeInference {
|
||||
ConstantInteger rInt = (ConstantInteger) rValue;
|
||||
return rInt.getType(programScope);
|
||||
} else if (rValue instanceof ConstantString) {
|
||||
type = SymbolTypeBasic.STRING;
|
||||
type = SymbolType.STRING;
|
||||
} else if (rValue instanceof ConstantChar) {
|
||||
type = SymbolTypeBasic.BYTE;
|
||||
type = SymbolType.BYTE;
|
||||
} else if (rValue instanceof ConstantBool) {
|
||||
type = SymbolTypeBasic.BOOLEAN;
|
||||
type = SymbolType.BOOLEAN;
|
||||
} else if (rValue instanceof ConstantUnary) {
|
||||
ConstantUnary constUnary = (ConstantUnary) rValue;
|
||||
SymbolType subType = inferType(programScope, constUnary.getOperand());
|
||||
@ -164,4 +285,5 @@ public class SymbolTypeInference {
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
|
76
src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java
Normal file
76
src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java
Normal file
@ -0,0 +1,76 @@
|
||||
package dk.camelot64.kickc.model;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Symbol Type of an inline numeric expression. Inline expressions can match multiple types depending on the actual value,
|
||||
* eg. the value 27 matches both byte and signed byte (which can in turn be promoted to word/signed word) , while the value -252 only matches signed word.
|
||||
*/
|
||||
public class SymbolTypeInline implements SymbolType {
|
||||
|
||||
/**
|
||||
* All potential types for the inline constant.
|
||||
*/
|
||||
private Collection<SymbolTypeInteger> types;
|
||||
|
||||
public SymbolTypeInline(Collection<SymbolTypeInteger> types) {
|
||||
this.types = types;
|
||||
}
|
||||
|
||||
public Collection<SymbolTypeInteger> getTypes() {
|
||||
return types;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
StringBuilder name = new StringBuilder();
|
||||
boolean first = true;
|
||||
for (SymbolTypeInteger type : types) {
|
||||
if(first) {
|
||||
first = false;
|
||||
} else {
|
||||
name.append("/");
|
||||
}
|
||||
name.append(type);
|
||||
}
|
||||
return name.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
SymbolTypeInline that = (SymbolTypeInline) o;
|
||||
return types != null ? types.equals(that.types) : that.types == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return types != null ? types.hashCode() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getTypeName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Is unsigned byte one of the potential types
|
||||
* @return true if unsigned byte is a potential type
|
||||
*/
|
||||
public boolean isByte() {
|
||||
return types.contains(BYTE);
|
||||
}
|
||||
|
||||
public boolean isSByte() {
|
||||
return types.contains(SBYTE);
|
||||
}
|
||||
|
||||
public boolean isWord() {
|
||||
return types.contains(WORD);
|
||||
}
|
||||
|
||||
public boolean isSWord() {
|
||||
return types.contains(SWORD);
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package dk.camelot64.kickc.model;
|
||||
|
||||
/** Integer symbol types (byte, signed byte, word, ...). */
|
||||
public class SymbolTypeInteger implements SymbolType {
|
||||
|
||||
private final String typeName;
|
||||
private final int minValue;
|
||||
private final int maxValue;
|
||||
|
||||
SymbolTypeInteger(String typeName, int minValue, int maxValue) {
|
||||
this.typeName = typeName;
|
||||
this.minValue = minValue;
|
||||
this.maxValue = maxValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return typeName;
|
||||
}
|
||||
|
||||
public int getMinValue() {
|
||||
return minValue;
|
||||
}
|
||||
|
||||
public int getMaxValue() {
|
||||
return maxValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getTypeName();
|
||||
}
|
||||
}
|
@ -273,7 +273,7 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
scopeStack.push(procedure);
|
||||
Label procExit = procedure.addLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
||||
VariableUnversioned returnVar = null;
|
||||
if (!SymbolTypeBasic.VOID.equals(type)) {
|
||||
if (!SymbolType.VOID.equals(type)) {
|
||||
returnVar = procedure.addVariable("return", type);
|
||||
}
|
||||
List<Variable> parameterList = new ArrayList<>();
|
||||
@ -433,12 +433,12 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
||||
|
||||
@Override
|
||||
public SymbolType visitTypeSimple(KickCParser.TypeSimpleContext ctx) {
|
||||
return SymbolTypeBasic.get(ctx.getText());
|
||||
return SymbolType.get(ctx.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) {
|
||||
return SymbolTypeBasic.get("signed " + ctx.SIMPLETYPE().getText());
|
||||
return SymbolType.get("signed " + ctx.SIMPLETYPE().getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -55,7 +55,7 @@ public class Pass1ProcedureCallParameters extends ControlFlowGraphCopyVisitor {
|
||||
currentBlockScope = currentBlockSymbol.getScope();
|
||||
}
|
||||
splitCurrentBlock(currentBlockScope.addLabelIntermediate().getRef());
|
||||
if(!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) {
|
||||
if(!SymbolType.VOID.equals(procedure.getReturnType())) {
|
||||
addStatementToCurrentBlock(new StatementAssignment(origCall.getlValue(), procReturnVarRef));
|
||||
} else {
|
||||
// No return type. Remove variable receiving the result.
|
||||
|
@ -32,7 +32,7 @@ public class Pass1ProcedureCallsReturnValue extends ControlFlowGraphCopyVisitor
|
||||
copyCall.setProcedure(procedureRef);
|
||||
addStatementToCurrentBlock(copyCall);
|
||||
getCurrentBlock().setCallSuccessor(procedure.getLabel().getRef());
|
||||
if (!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) {
|
||||
if (!SymbolType.VOID.equals(procedure.getReturnType())) {
|
||||
// Find return variable final version
|
||||
Label returnBlockLabel = procedure.getLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
||||
ControlFlowBlock returnBlock = program.getGraph().getBlock(returnBlockLabel.getRef());
|
||||
|
@ -36,20 +36,17 @@ public class Pass1TypeInference {
|
||||
LValue lValue = assignment.getlValue();
|
||||
if (lValue instanceof VariableRef) {
|
||||
Variable symbol = programScope.getVariable((VariableRef) lValue);
|
||||
if (SymbolTypeBasic.VAR.equals(symbol.getType())) {
|
||||
if (SymbolType.VAR.equals(symbol.getType())) {
|
||||
// Unresolved symbol - perform inference
|
||||
Operator operator = assignment.getOperator();
|
||||
if (operator == null || assignment.getrValue1() == null) {
|
||||
// Copy operation or Unary operation
|
||||
RValue rValue = assignment.getrValue2();
|
||||
SymbolType subType = SymbolTypeInference.inferType(programScope, rValue);
|
||||
SymbolType type = SymbolTypeInference.inferType(operator, subType);
|
||||
SymbolType type = SymbolTypeInference.inferType(programScope, operator, rValue);
|
||||
symbol.setTypeInferred(type);
|
||||
} else {
|
||||
// Binary operation
|
||||
SymbolType type1 = SymbolTypeInference.inferType(programScope, assignment.getrValue1());
|
||||
SymbolType type2 = SymbolTypeInference.inferType(programScope, assignment.getrValue2());
|
||||
SymbolType type = SymbolTypeInference.inferType(type1, operator, type2);
|
||||
SymbolType type = SymbolTypeInference.inferType(programScope, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2());
|
||||
symbol.setTypeInferred(type);
|
||||
}
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ public class Pass4CodeGeneration {
|
||||
String asmElement = AsmFragment.getAsmConstant(program, element, 99, scopeRef);
|
||||
asmElements.add(asmElement);
|
||||
}
|
||||
if(SymbolTypeBasic.BYTE.equals(constantArray.getElementType())) {
|
||||
if(SymbolType.isByte(constantArray.getElementType())) {
|
||||
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements);
|
||||
added.add(asmName);
|
||||
} else {
|
||||
|
@ -67,7 +67,7 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
||||
continue;
|
||||
} else {
|
||||
// Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes)
|
||||
throw new RuntimeException("ASM name already used "+asmName);
|
||||
throw new RuntimeException("ASM name already used " + asmName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -91,7 +91,7 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
||||
continue;
|
||||
} else {
|
||||
// Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes)
|
||||
throw new RuntimeException("ASM name already used "+asmName);
|
||||
throw new RuntimeException("ASM name already used " + asmName);
|
||||
}
|
||||
|
||||
}
|
||||
@ -129,23 +129,28 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
||||
* Create a new register for a specific variable type.
|
||||
*
|
||||
* @param variable The variable to create a register for.
|
||||
* The register type created uses one or more zero page locations based on the variable type
|
||||
* The register type created uses one or more zero page locations based on the variable type
|
||||
* @return The new zeropage register
|
||||
*/
|
||||
private Registers.Register allocateNewRegisterZp(Variable variable) {
|
||||
SymbolType varType = variable.getType();
|
||||
if (varType.equals(SymbolTypeBasic.BYTE)) {
|
||||
if (SymbolType.isByte(varType)) {
|
||||
return new Registers.RegisterZpByte(currentZp++);
|
||||
} else if (varType.equals(SymbolTypeBasic.SBYTE)) {
|
||||
} else if (SymbolType.isSByte(varType)) {
|
||||
return new Registers.RegisterZpSignedByte(currentZp++);
|
||||
} else if (varType.equals(SymbolTypeBasic.WORD)) {
|
||||
} else if (SymbolType.isWord(varType)) {
|
||||
Registers.RegisterZpWord registerZpWord =
|
||||
new Registers.RegisterZpWord(currentZp);
|
||||
currentZp = currentZp + 2;
|
||||
return registerZpWord;
|
||||
} else if (varType.equals(SymbolTypeBasic.BOOLEAN)) {
|
||||
} else if (SymbolType.isSWord(varType)) {
|
||||
Registers.RegisterZpSWord registerZpSWord =
|
||||
new Registers.RegisterZpSWord(currentZp);
|
||||
currentZp = currentZp + 2;
|
||||
return registerZpSWord;
|
||||
} else if (varType.equals(SymbolType.BOOLEAN)) {
|
||||
return new Registers.RegisterZpBool(currentZp++);
|
||||
} else if (varType.equals(SymbolTypeBasic.VOID)) {
|
||||
} else if (varType.equals(SymbolType.VOID)) {
|
||||
// No need to setRegister register for VOID value
|
||||
return null;
|
||||
} else if (varType instanceof SymbolTypePointer) {
|
||||
|
@ -24,6 +24,10 @@ public class TestPrograms extends TestCase {
|
||||
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
|
||||
}
|
||||
|
||||
public void testZpptr() throws IOException, URISyntaxException {
|
||||
compileAndCompare("zpptr");
|
||||
}
|
||||
|
||||
public void testCasting() throws IOException, URISyntaxException {
|
||||
compileAndCompare("casting");
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ void line_ydxd(byte y, byte x, byte y1, byte yd, byte xd) {
|
||||
|
||||
void plot(byte x, byte y) {
|
||||
byte* plotter_x = 0;
|
||||
byte* plotter_y = 0;
|
||||
word plotter_y = 0;
|
||||
>plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y];
|
||||
<plotter_x = plot_xlo[x];
|
||||
>plotter_y = plot_yhi[y];
|
||||
|
@ -51,7 +51,7 @@ const byte[] plot_bit = $1400;
|
||||
|
||||
void plot(byte x, byte y) {
|
||||
byte* plotter_x = 0;
|
||||
byte* plotter_y = 0;
|
||||
word plotter_y = 0;
|
||||
>plotter_x = plot_xhi[x]; // Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y];
|
||||
<plotter_x = plot_xlo[x];
|
||||
>plotter_y = plot_yhi[y];
|
||||
|
@ -1,13 +1,26 @@
|
||||
byte* SCREEN = $0400;
|
||||
byte* SCREEN2 = $0600;
|
||||
byte* SCREEN2 = SCREEN+40*3;
|
||||
byte* SCREEN3 = SCREEN+40*6;
|
||||
|
||||
void main() {
|
||||
for( byte b: 0..100) {
|
||||
byte b2 = 100-b; // Subtract byte from byte (not signed)
|
||||
SCREEN2[b] = b2;
|
||||
//Subtract unsigned byte from unsigned byte
|
||||
byte b2 = 200-b;
|
||||
SCREEN[b] = b2;
|
||||
// Cast unsigned byte to signed byte & negate
|
||||
signed byte sb = - (signed byte)b;
|
||||
SCREEN[b] = (byte)sb;
|
||||
SCREEN2[b] = (byte)sb;
|
||||
}
|
||||
|
||||
w();
|
||||
}
|
||||
|
||||
|
||||
void w() {
|
||||
for(byte i : 0..10) {
|
||||
word w1 = 1300;
|
||||
word w2 = 1250;
|
||||
byte b = (byte)(w1-w2);
|
||||
byte b2 = 1400-1350+i;
|
||||
SCREEN3[i] = b2;
|
||||
}
|
||||
}
|
||||
|
@ -8,31 +8,31 @@ main: scope:[main] from @1
|
||||
[1] phi() [ ] ( main:0 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
[2] (byte) main::i#4 ← phi( main/(byte) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] )
|
||||
[2] (byte) main::i#4 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte) main::i#1 ) [ main::i#4 ] ( main:0 [ main::i#4 ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
[3] (byte) main::j#2 ← phi( main::@1/(byte) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] )
|
||||
[3] (byte) main::j#2 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#1 ) [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] )
|
||||
[4] *((const byte*) SCREEN#0 + (byte) main::i#4) ← (byte) main::j#2 [ main::i#4 main::j#2 ] ( main:0 [ main::i#4 main::j#2 ] )
|
||||
[5] (byte) main::j#1 ← ++ (byte) main::j#2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] )
|
||||
[6] if((byte) main::j#1!=(byte) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] )
|
||||
[6] if((byte) main::j#1!=(byte/signed byte/word/signed word) 101) goto main::@2 [ main::i#4 main::j#1 ] ( main:0 [ main::i#4 main::j#1 ] )
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@2
|
||||
[7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] )
|
||||
[8] if((byte) main::i#1!=(byte) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] )
|
||||
[8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::i#1 ] ( main:0 [ main::i#1 ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@5 main::@7
|
||||
[9] (byte) main::k#4 ← phi( main::@5/(byte) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] )
|
||||
[9] (byte) main::k#4 ← phi( main::@5/(byte/signed byte/word/signed word) 0 main::@7/(byte) main::k#1 ) [ main::k#4 ] ( main:0 [ main::k#4 ] )
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
[10] (byte) main::l#2 ← phi( main::@3/(byte) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] )
|
||||
[10] (byte) main::l#2 ← phi( main::@3/(byte/signed byte/word/signed word) 0 main::@4/(byte) main::l#1 ) [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] )
|
||||
asm { eor#$55tax }
|
||||
[12] *((const byte*) SCREEN#0 + (byte) main::k#4) ← (byte) main::l#2 [ main::k#4 main::l#2 ] ( main:0 [ main::k#4 main::l#2 ] )
|
||||
[13] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] )
|
||||
[14] if((byte) main::l#1!=(byte) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] )
|
||||
[14] if((byte) main::l#1!=(byte/signed byte/word/signed word) 101) goto main::@4 [ main::k#4 main::l#1 ] ( main:0 [ main::k#4 main::l#1 ] )
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@4
|
||||
[15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] )
|
||||
[16] if((byte) main::k#1!=(byte) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] )
|
||||
[16] if((byte) main::k#1!=(byte/signed byte/word/signed word) 101) goto main::@3 [ main::k#1 ] ( main:0 [ main::k#1 ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@7
|
||||
[17] return [ ] ( main:0 [ ] )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = (word) 1024
|
||||
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
|
@ -5,10 +5,10 @@
|
||||
to:@end
|
||||
@end: scope:[] from @10
|
||||
main: scope:[main] from @10
|
||||
[1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
||||
[2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
||||
[3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] )
|
||||
[4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] )
|
||||
[1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||
[2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||
[3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] )
|
||||
[4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] )
|
||||
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
@ -27,11 +27,11 @@ lines: scope:[lines] from main::@1
|
||||
[10] phi() [ ] ( main:0::lines:7 [ ] )
|
||||
to:lines::@1
|
||||
lines::@1: scope:[lines] from lines lines::@3
|
||||
[11] (byte) lines::l#2 ← phi( lines/(byte) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] )
|
||||
[11] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:0::lines:7 [ lines::l#2 ] )
|
||||
[12] (byte~) lines::$0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 ] ( main:0::lines:7 [ lines::l#2 lines::$0 ] )
|
||||
[13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] )
|
||||
[13] (byte~) lines::$2 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 ] )
|
||||
[14] (byte~) lines::$3 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 ] )
|
||||
[15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] )
|
||||
[15] (byte~) lines::$5 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] ( main:0::lines:7 [ lines::l#2 lines::$0 lines::$2 lines::$3 lines::$5 ] )
|
||||
[16] (byte) line::x0#0 ← (byte~) lines::$0 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$2 lines::$3 lines::$5 line::x0#0 ] )
|
||||
[17] (byte) line::x1#0 ← (byte~) lines::$2 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] ( main:0::lines:7 [ lines::l#2 lines::$3 lines::$5 line::x0#0 line::x1#0 ] )
|
||||
[18] (byte) line::y0#0 ← (byte~) lines::$3 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] ( main:0::lines:7 [ lines::l#2 lines::$5 line::x0#0 line::x1#0 line::y0#0 ] )
|
||||
@ -145,7 +145,7 @@ line_ydxi: scope:[line_ydxi] from line::@13 line::@3
|
||||
[86] (byte) line_ydxi::y#6 ← phi( line::@13/(byte) line_ydxi::y#1 line::@3/(byte) line_ydxi::y#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] )
|
||||
[86] (byte) line_ydxi::x#5 ← phi( line::@13/(byte) line_ydxi::x#1 line::@3/(byte) line_ydxi::x#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] )
|
||||
[86] (byte) line_ydxi::xd#2 ← phi( line::@13/(byte) line_ydxi::xd#1 line::@3/(byte) line_ydxi::xd#0 ) [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 ] )
|
||||
[87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] )
|
||||
[87] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] )
|
||||
to:line_ydxi::@1
|
||||
line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2
|
||||
[88] (byte) line_ydxi::e#3 ← phi( line_ydxi/(byte) line_ydxi::e#0 line_ydxi::@2/(byte) line_ydxi::e#6 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] )
|
||||
@ -156,18 +156,18 @@ line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2
|
||||
[91] call plot param-assignment [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] )
|
||||
to:line_ydxi::@5
|
||||
line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1
|
||||
[92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] )
|
||||
[92] (byte) line_ydxi::y#2 ← (byte) line_ydxi::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::e#3 line_ydxi::y#2 ] )
|
||||
[93] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] )
|
||||
[94] if((byte) line_ydxi::yd#5>=(byte) line_ydxi::e#1) goto line_ydxi::@2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] )
|
||||
to:line_ydxi::@3
|
||||
line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5
|
||||
[95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] )
|
||||
[95] (byte) line_ydxi::x#2 ← (byte) line_ydxi::x#3 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::e#1 line_ydxi::x#2 ] )
|
||||
[96] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] )
|
||||
to:line_ydxi::@2
|
||||
line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5
|
||||
[97] (byte) line_ydxi::e#6 ← phi( line_ydxi::@3/(byte) line_ydxi::e#2 line_ydxi::@5/(byte) line_ydxi::e#1 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] )
|
||||
[97] (byte) line_ydxi::x#6 ← phi( line_ydxi::@3/(byte) line_ydxi::x#2 line_ydxi::@5/(byte) line_ydxi::x#3 ) [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] )
|
||||
[98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] )
|
||||
[98] (byte~) line_ydxi::$8 ← (byte) line_ydxi::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 line_ydxi::$8 ] )
|
||||
[99] if((byte) line_ydxi::y#2<(byte~) line_ydxi::$8) goto line_ydxi::@1 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#6 line_ydxi::y#2 line_ydxi::e#6 ] )
|
||||
to:line_ydxi::@return
|
||||
line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2
|
||||
@ -177,14 +177,14 @@ plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1
|
||||
[101] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] )
|
||||
[101] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] )
|
||||
[102] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] )
|
||||
[103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] )
|
||||
[103] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 ] )
|
||||
[104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] )
|
||||
[105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 ] )
|
||||
[106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] )
|
||||
[107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] )
|
||||
[107] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] )
|
||||
[108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
|
||||
[109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] )
|
||||
[110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] )
|
||||
[109] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] )
|
||||
[110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] )
|
||||
[111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] )
|
||||
[112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] )
|
||||
[113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:0::lines:7::line:20::line_xdyi:34::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:0::lines:7::line:20::line_xdyi:79::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:0::lines:7::line:20::line_ydxd:55::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:0::lines:7::line:20::line_ydxd:71::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:0::lines:7::line:20::line_xdyd:49::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:0::lines:7::line:20::line_xdyd:65::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] )
|
||||
@ -198,7 +198,7 @@ line_xdyi: scope:[line_xdyi] from line::@17 line::@27
|
||||
[115] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] )
|
||||
[115] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] )
|
||||
[115] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] )
|
||||
[116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] )
|
||||
[116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] )
|
||||
to:line_xdyi::@1
|
||||
line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2
|
||||
[117] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] )
|
||||
@ -209,18 +209,18 @@ line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2
|
||||
[120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] )
|
||||
to:line_xdyi::@5
|
||||
line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1
|
||||
[121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] )
|
||||
[121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] )
|
||||
[122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] )
|
||||
[123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] )
|
||||
to:line_xdyi::@3
|
||||
line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5
|
||||
[124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] )
|
||||
[124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] )
|
||||
[125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] )
|
||||
to:line_xdyi::@2
|
||||
line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5
|
||||
[126] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] )
|
||||
[126] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] )
|
||||
[127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] )
|
||||
[127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] )
|
||||
[128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] )
|
||||
to:line_xdyi::@return
|
||||
line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2
|
||||
@ -232,7 +232,7 @@ line_ydxd: scope:[line_ydxd] from line::@10 line::@6
|
||||
[130] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] )
|
||||
[130] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] )
|
||||
[130] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] )
|
||||
[131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] )
|
||||
[131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] )
|
||||
to:line_ydxd::@1
|
||||
line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2
|
||||
[132] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] )
|
||||
@ -243,18 +243,18 @@ line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2
|
||||
[135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] )
|
||||
to:line_ydxd::@5
|
||||
line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1
|
||||
[136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] )
|
||||
[136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] )
|
||||
[137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] )
|
||||
[138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] )
|
||||
to:line_ydxd::@3
|
||||
line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5
|
||||
[139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] )
|
||||
[139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] )
|
||||
[140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] )
|
||||
to:line_ydxd::@2
|
||||
line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5
|
||||
[141] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] )
|
||||
[141] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] )
|
||||
[142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] )
|
||||
[142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] )
|
||||
[143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] )
|
||||
to:line_ydxd::@return
|
||||
line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2
|
||||
@ -266,7 +266,7 @@ line_xdyd: scope:[line_xdyd] from line::@20 line::@24
|
||||
[145] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] )
|
||||
[145] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] )
|
||||
[145] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] )
|
||||
[146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] )
|
||||
[146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] )
|
||||
to:line_xdyd::@1
|
||||
line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2
|
||||
[147] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] )
|
||||
@ -277,18 +277,18 @@ line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2
|
||||
[150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] )
|
||||
to:line_xdyd::@5
|
||||
line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1
|
||||
[151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] )
|
||||
[151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] )
|
||||
[152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] )
|
||||
[153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] )
|
||||
to:line_xdyd::@3
|
||||
line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5
|
||||
[154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] )
|
||||
[154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] )
|
||||
[155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] )
|
||||
to:line_xdyd::@2
|
||||
line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5
|
||||
[156] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] )
|
||||
[156] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] )
|
||||
[157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] )
|
||||
[157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] )
|
||||
[158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] )
|
||||
to:line_xdyd::@return
|
||||
line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2
|
||||
@ -298,39 +298,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@3
|
||||
[160] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||
to:init_plot_tables::@1
|
||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
||||
[161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
|
||||
[161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
|
||||
[163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
|
||||
[167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
||||
[166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
|
||||
[167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
||||
to:init_plot_tables::@2
|
||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
||||
[168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
|
||||
[168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
|
||||
[169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
[170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
[170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
to:init_plot_tables::@3
|
||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
||||
[171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
|
||||
[171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
|
||||
[173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
|
||||
[174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
|
||||
[175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
|
||||
[177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
|
||||
[179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
|
||||
[179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
to:init_plot_tables::@7
|
||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
||||
[180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
|
||||
[180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
|
||||
to:init_plot_tables::@4
|
||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
||||
[181] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
|
||||
[182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
[183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
[183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
to:init_plot_tables::@return
|
||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||
[184] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||
@ -342,15 +342,15 @@ init_screen: scope:[init_screen] from main
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
[186] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[187] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[188] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
[189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
[189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
|
||||
[190] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[191] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[192] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
[193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
[193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
[194] return [ ] ( main:0::init_screen:5 [ ] )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,13 +4,13 @@
|
||||
(byte*) BGCOL
|
||||
(const byte*) BGCOL#0 BGCOL = (word) 53280
|
||||
(byte*) BITMAP
|
||||
(const byte*) BITMAP#0 BITMAP = (word) 8192
|
||||
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192
|
||||
(byte) BMM
|
||||
(const byte) BMM#0 BMM = (byte) 32
|
||||
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
|
||||
(byte*) COLS
|
||||
(const byte*) COLS#0 COLS = (word) 55296
|
||||
(byte) CSEL
|
||||
(const byte) CSEL#0 CSEL = (byte) 8
|
||||
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
|
||||
(byte*) D011
|
||||
(const byte*) D011#0 D011 = (word) 53265
|
||||
(byte*) D016
|
||||
@ -18,19 +18,19 @@
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = (word) 53272
|
||||
(byte) DEN
|
||||
(const byte) DEN#0 DEN = (byte) 16
|
||||
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
|
||||
(byte) ECM
|
||||
(const byte) ECM#0 ECM = (byte) 64
|
||||
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
|
||||
(byte*) FGCOL
|
||||
(const byte*) FGCOL#0 FGCOL = (word) 53281
|
||||
(byte) MCM
|
||||
(const byte) MCM#0 MCM = (byte) 16
|
||||
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
|
||||
(byte) RSEL
|
||||
(const byte) RSEL#0 RSEL = (byte) 8
|
||||
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8
|
||||
(byte) RST8
|
||||
(const byte) RST8#0 RST8 = (byte) 128
|
||||
(const byte) RST8#0 RST8 = (byte/word/signed word) 128
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = (word) 1024
|
||||
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
|
||||
(byte*) SCROLL
|
||||
(const byte*) SCROLL#0 SCROLL = (word) 53270
|
||||
(void()) init_plot_tables()
|
||||
@ -267,11 +267,11 @@
|
||||
(byte) lines::l#1 l zp ZP_BYTE:2 151.5
|
||||
(byte) lines::l#2 l zp ZP_BYTE:2 60.6
|
||||
(byte) lines_cnt
|
||||
(const byte) lines_cnt#0 lines_cnt = (byte) 8
|
||||
(const byte) lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word) 8
|
||||
(byte[]) lines_x
|
||||
(const byte[]) lines_x#0 lines_x = { (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10, (byte) 40, (byte) 60 }
|
||||
(const byte[]) lines_x#0 lines_x = { (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60 }
|
||||
(byte[]) lines_y
|
||||
(const byte[]) lines_y#0 lines_y = { (byte) 10, (byte) 40, (byte) 60, (byte) 80, (byte) 110, (byte) 80, (byte) 60, (byte) 40, (byte) 10 }
|
||||
(const byte[]) lines_y#0 lines_y = { (byte/signed byte/word/signed word) 10, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 110, (byte/signed byte/word/signed word) 80, (byte/signed byte/word/signed word) 60, (byte/signed byte/word/signed word) 40, (byte/signed byte/word/signed word) 10 }
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
@ -290,9 +290,9 @@
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:8 2.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:8 0.8
|
||||
(byte*) plot::plotter_y
|
||||
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:11 2.0
|
||||
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:11 4.0
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 plotter_y zp ZP_WORD:11 2.0
|
||||
(word) plot::plotter_y#2 plotter_y zp ZP_WORD:11 4.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 reg byte x 11.0
|
||||
(byte) plot::x#1 reg byte x 11.0
|
||||
@ -306,15 +306,15 @@
|
||||
(byte) plot::y#3 reg byte y 22.0
|
||||
(byte) plot::y#4 reg byte y 6.857142857142857
|
||||
(byte[]) plot_bit
|
||||
(const byte[]) plot_bit#0 plot_bit = (word) 5120
|
||||
(const byte[]) plot_bit#0 plot_bit = (word/signed word) 5120
|
||||
(byte[]) plot_xhi
|
||||
(const byte[]) plot_xhi#0 plot_xhi = (word) 4352
|
||||
(const byte[]) plot_xhi#0 plot_xhi = (word/signed word) 4352
|
||||
(byte[]) plot_xlo
|
||||
(const byte[]) plot_xlo#0 plot_xlo = (word) 4096
|
||||
(const byte[]) plot_xlo#0 plot_xlo = (word/signed word) 4096
|
||||
(byte[]) plot_yhi
|
||||
(const byte[]) plot_yhi#0 plot_yhi = (word) 4864
|
||||
(const byte[]) plot_yhi#0 plot_yhi = (word/signed word) 4864
|
||||
(byte[]) plot_ylo
|
||||
(const byte[]) plot_ylo#0 plot_ylo = (word) 4608
|
||||
(const byte[]) plot_ylo#0 plot_ylo = (word/signed word) 4608
|
||||
|
||||
zp ZP_BYTE:2 [ lines::l#2 lines::l#1 init_plot_tables::$6 ]
|
||||
zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 lines::$2 line::x1#0 ]
|
||||
@ -340,7 +340,7 @@ reg byte a [ line_ydxi::$8 ]
|
||||
reg byte a [ plot::$0 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$2 ]
|
||||
zp ZP_PTR_BYTE:11 [ plot::plotter_y#1 plot::plotter_y#2 ]
|
||||
zp ZP_WORD:11 [ plot::plotter_y#1 plot::plotter_y#2 ]
|
||||
reg byte a [ plot::$3 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
|
@ -5,17 +5,17 @@
|
||||
to:@end
|
||||
@end: scope:[] from @5
|
||||
main: scope:[main] from @5
|
||||
[1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
||||
[2] *((const byte*) FGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
||||
[3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte) 3 [ ] ( main:0 [ ] )
|
||||
[4] *((const byte*) D018#0) ← (byte) 24 [ ] ( main:0 [ ] )
|
||||
[1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||
[2] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||
[3] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:0 [ ] )
|
||||
[4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] )
|
||||
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
[6] call init_plot_tables param-assignment [ ] ( main:0 [ ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@2 main::@5 main::@7
|
||||
[7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] )
|
||||
[7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:0 [ ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
|
||||
@ -32,7 +32,7 @@ plots: scope:[plots] from main::@3
|
||||
[13] phi() [ ] ( main:0::plots:9 [ ] )
|
||||
to:plots::@1
|
||||
plots::@1: scope:[plots] from plots plots::@3
|
||||
[14] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] )
|
||||
[14] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:9 [ plots::i#2 ] )
|
||||
[15] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:0::plots:9 [ plots::i#2 plots::$0 ] )
|
||||
[16] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:0::plots:9 [ plots::i#2 plots::$0 plots::$1 ] )
|
||||
[17] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:0::plots:9 [ plots::i#2 plots::$1 plot::x#0 ] )
|
||||
@ -48,14 +48,14 @@ plots::@return: scope:[plots] from plots::@3
|
||||
to:@return
|
||||
plot: scope:[plot] from plots::@1
|
||||
[23] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
|
||||
[24] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
|
||||
[24] (byte*) plot::plotter_x#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
|
||||
[25] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] )
|
||||
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
|
||||
[27] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
|
||||
[28] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
|
||||
[28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
|
||||
[29] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
|
||||
[30] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
|
||||
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
|
||||
[30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
|
||||
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
|
||||
[32] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] )
|
||||
[33] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:0::plots:9::plot:19 [ plots::i#2 plot::plotter#0 plot::$6 ] )
|
||||
[34] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:9::plot:19 [ plots::i#2 ] )
|
||||
@ -67,39 +67,39 @@ init_plot_tables: scope:[init_plot_tables] from main::@5
|
||||
[36] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||
to:init_plot_tables::@1
|
||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
||||
[37] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[37] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
|
||||
[37] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[37] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[38] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
|
||||
[39] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[40] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[41] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
|
||||
[42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
|
||||
[43] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
||||
[42] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
|
||||
[43] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
||||
to:init_plot_tables::@2
|
||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
||||
[44] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
|
||||
[44] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
|
||||
[45] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
[46] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
[46] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
|
||||
to:init_plot_tables::@3
|
||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
||||
[47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
|
||||
[47] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[47] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[48] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
|
||||
[49] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
|
||||
[50] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
|
||||
[51] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[52] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
|
||||
[53] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
|
||||
[55] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
[54] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
|
||||
[55] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
|
||||
to:init_plot_tables::@7
|
||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
||||
[56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
|
||||
[56] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word/signed word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
|
||||
to:init_plot_tables::@4
|
||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
||||
[57] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
|
||||
[58] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
[59] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
[59] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
|
||||
to:init_plot_tables::@return
|
||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||
[60] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||
@ -111,15 +111,15 @@ init_screen: scope:[init_screen] from main
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
[62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[63] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
|
||||
[64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
[65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
[65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
|
||||
[66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[67] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
|
||||
[68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
[69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
[69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
[70] return [ ] ( main:0::init_screen:5 [ ] )
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user