mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-10-12 03:24:11 +00:00
Working on support for inline constants with multiple potential types.
Improving fragment synthesis.
This commit is contained in:
parent
c8e3b36893
commit
ebb71b4130
@ -20,7 +20,7 @@
|
|||||||
</profile>
|
</profile>
|
||||||
</annotationProcessing>
|
</annotationProcessing>
|
||||||
<bytecodeTargetLevel>
|
<bytecodeTargetLevel>
|
||||||
<module name="kickc" target="1.7" />
|
<module name="kickc" target="1.8" />
|
||||||
</bytecodeTargetLevel>
|
</bytecodeTargetLevel>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -7,7 +7,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</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" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
<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 url="file://$MODULE_DIR$/target/classes" />
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
|
4
pom.xml
4
pom.xml
@ -5,8 +5,8 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.7</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
<maven.compiler.target>1.7</maven.compiler.target>
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<groupId>dk.camelot64.kickc</groupId>
|
<groupId>dk.camelot64.kickc</groupId>
|
||||||
|
@ -64,7 +64,7 @@ public class AsmFragment {
|
|||||||
public AsmParameter getBoundValue(String name) {
|
public AsmParameter getBoundValue(String name) {
|
||||||
Value boundValue = getBinding(name);
|
Value boundValue = getBinding(name);
|
||||||
if (boundValue == null) {
|
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) {
|
if (boundValue instanceof Variable) {
|
||||||
Variable boundVar = (Variable) boundValue;
|
Variable boundVar = (Variable) boundValue;
|
||||||
@ -77,12 +77,12 @@ public class AsmFragment {
|
|||||||
} else if (boundValue instanceof ConstantVar) {
|
} else if (boundValue instanceof ConstantVar) {
|
||||||
ConstantVar constantVar = (ConstantVar) boundValue;
|
ConstantVar constantVar = (ConstantVar) boundValue;
|
||||||
String constantValueAsm = getAsmConstant(program, constantVar.getRef(), 99, codeScopeRef);
|
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);
|
return new AsmParameter(constantValueAsm, constantValueZp);
|
||||||
} else if (boundValue instanceof ConstantValue) {
|
} else if (boundValue instanceof ConstantValue) {
|
||||||
ConstantValue boundConst = (ConstantValue) boundValue;
|
ConstantValue boundConst = (ConstantValue) boundValue;
|
||||||
String constantValueAsm = getAsmConstant(program, boundConst, 99, codeScopeRef);
|
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);
|
return new AsmParameter(constantValueAsm, constantValueZp);
|
||||||
} else if (boundValue instanceof Label) {
|
} else if (boundValue instanceof Label) {
|
||||||
String param = ((Label) boundValue).getLocalName().replace('@', 'b').replace(':', '_').replace("$", "_");
|
String param = ((Label) boundValue).getLocalName().replace('@', 'b').replace(':', '_').replace("$", "_");
|
||||||
@ -363,7 +363,7 @@ public class AsmFragment {
|
|||||||
public AsmParameter visitAsmExprInt(KickCParser.AsmExprIntContext ctx) {
|
public AsmParameter visitAsmExprInt(KickCParser.AsmExprIntContext ctx) {
|
||||||
Number number = NumberParser.parseLiteral(ctx.NUMBER().getText());
|
Number number = NumberParser.parseLiteral(ctx.NUMBER().getText());
|
||||||
ConstantInteger intVal = new ConstantInteger(number.intValue());
|
ConstantInteger intVal = new ConstantInteger(number.intValue());
|
||||||
boolean isZp = SymbolTypeBasic.BYTE.equals(intVal.getType());
|
boolean isZp = SymbolType.BYTE.equals(intVal.getType());
|
||||||
String param = getAsmNumber(number);
|
String param = getAsmNumber(number);
|
||||||
return new AsmParameter(param, isZp);
|
return new AsmParameter(param, isZp);
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,17 @@ public class AsmFragmentManager {
|
|||||||
mapConst.put("cowo3", "cowo2");
|
mapConst.put("cowo3", "cowo2");
|
||||||
mapConst.put("coby2", "coby1");
|
mapConst.put("coby2", "coby1");
|
||||||
mapConst.put("coby3", "coby2");
|
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<>();
|
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_(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("(.*)_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) {
|
for (FragmentSynthesis synth : synths) {
|
||||||
CharStream synthesized = synth.synthesize(signature, log);
|
CharStream synthesized = synth.synthesize(signature, log);
|
||||||
if (synthesized != null) {
|
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
|
* 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())) {
|
} else if (Registers.RegisterType.REG_ALU.equals(register.getType())) {
|
||||||
throw new AsmFragment.AluNotApplicableException();
|
throw new AsmFragment.AluNotApplicableException();
|
||||||
}
|
}
|
||||||
} else if (value instanceof ConstantVar) {
|
} else if (value instanceof ConstantVar || value instanceof ConstantValue) {
|
||||||
ConstantVar constantVar = (ConstantVar) value;
|
SymbolType constType;
|
||||||
SymbolType constType = constantVar.getType();
|
if (value instanceof ConstantVar) {
|
||||||
|
constType = ((ConstantVar) value).getType();
|
||||||
if (SymbolTypeBasic.BYTE.equals(constType)) {
|
} else if(value instanceof ConstantValue) {
|
||||||
String name = "coby" + nextConstByteIdx++;
|
constType = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value);
|
||||||
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 {
|
} else {
|
||||||
throw new RuntimeException("Unhandled constant type " + constType);
|
throw new RuntimeException("Unhandled constant type " + value);
|
||||||
}
|
}
|
||||||
} else if (value instanceof ConstantInteger) {
|
if (SymbolType.BYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isByte())) {
|
||||||
ConstantInteger intValue = (ConstantInteger) value;
|
|
||||||
if (SymbolTypeBasic.BYTE.equals(intValue.getType(program.getScope()))) {
|
|
||||||
String name = "coby" + nextConstByteIdx++;
|
String name = "coby" + nextConstByteIdx++;
|
||||||
bindings.put(name, value);
|
bindings.put(name, value);
|
||||||
return name;
|
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++;
|
String name = "cowo" + nextConstByteIdx++;
|
||||||
bindings.put(name, value);
|
bindings.put(name, value);
|
||||||
return name;
|
return name;
|
||||||
}
|
} else if (SymbolType.SBYTE.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSByte())) {
|
||||||
} else if (value instanceof ConstantValue) {
|
String name = "cosby" + nextConstByteIdx++;
|
||||||
SymbolType type = SymbolTypeInference.inferType(program.getScope(), (ConstantValue) value);
|
|
||||||
if (SymbolTypeBasic.BYTE.equals(type)) {
|
|
||||||
String name = "coby" + nextConstByteIdx++;
|
|
||||||
bindings.put(name, value);
|
bindings.put(name, value);
|
||||||
return name;
|
return name;
|
||||||
} else if (SymbolTypeBasic.WORD.equals(type)) {
|
} else if (SymbolType.SWORD.equals(constType) || (constType instanceof SymbolTypeInline && ((SymbolTypeInline) constType).isSWord())) {
|
||||||
String name = "cowo" + nextConstByteIdx++;
|
String name = "coswo" + nextConstByteIdx++;
|
||||||
bindings.put(name, value);
|
bindings.put(name, value);
|
||||||
return name;
|
return name;
|
||||||
} else if (type instanceof SymbolTypePointer) {
|
} else if (constType instanceof SymbolTypePointer && SymbolType.BYTE.equals(((SymbolTypePointer) constType).getElementType())) {
|
||||||
String name = "cowo" + nextConstByteIdx++;
|
String name = "cowo" + nextConstByteIdx++;
|
||||||
bindings.put(name, value);
|
bindings.put(name, value);
|
||||||
return name;
|
return name;
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Unhandled constant type " + type);
|
throw new RuntimeException("Unhandled constant type " + constType);
|
||||||
}
|
}
|
||||||
} else if (value instanceof Label) {
|
} else if (value instanceof Label) {
|
||||||
String name = "la" + nextLabelIdx++;
|
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
|
@Override
|
||||||
public SymbolType getType(ProgramScope scope) {
|
public SymbolType getType(ProgramScope scope) {
|
||||||
return SymbolTypeBasic.BOOLEAN;
|
return SymbolType.BOOLEAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,7 +13,7 @@ public class ConstantChar implements ConstantValue {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SymbolType getType(ProgramScope scope) {
|
public SymbolType getType(ProgramScope scope) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Character getValue() {
|
public Character getValue() {
|
||||||
@ -30,7 +30,7 @@ public class ConstantChar implements ConstantValue {
|
|||||||
if (program == null) {
|
if (program == null) {
|
||||||
return "'" + value + "'";
|
return "'" + value + "'";
|
||||||
} else {
|
} else {
|
||||||
return "(" + SymbolTypeBasic.BYTE.getTypeName() + ") " + "'" + value + "'";
|
return "(" + SymbolType.BYTE.getTypeName() + ") " + "'" + value + "'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ public class ConstantDouble implements ConstantValue {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SymbolType getType(ProgramScope scope) {
|
public SymbolType getType(ProgramScope scope) {
|
||||||
return SymbolTypeBasic.DOUBLE;
|
return SymbolType.DOUBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Double getNumber() {
|
public Double getNumber() {
|
||||||
@ -30,7 +30,7 @@ public class ConstantDouble implements ConstantValue {
|
|||||||
if(program ==null) {
|
if(program ==null) {
|
||||||
return Double.toString(number);
|
return Double.toString(number);
|
||||||
} else {
|
} 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.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/** SSA form constant integer value */
|
/** SSA form constant integer value */
|
||||||
public class ConstantInteger implements ConstantValue {
|
public class ConstantInteger implements ConstantValue {
|
||||||
|
|
||||||
@ -25,13 +27,14 @@ public class ConstantInteger implements ConstantValue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SymbolType getType() {
|
public SymbolType getType() {
|
||||||
SymbolType type;
|
ArrayList<SymbolTypeInteger> potentialTypes = new ArrayList<>();
|
||||||
if (getNumber() < 256) {
|
Integer number = getNumber();
|
||||||
type = SymbolTypeBasic.BYTE;
|
for (SymbolTypeInteger typeInteger : SymbolType.getIntegerTypes()) {
|
||||||
} else {
|
if(number>=typeInteger.getMinValue() && number<= typeInteger.getMaxValue()) {
|
||||||
type = SymbolTypeBasic.WORD;
|
potentialTypes.add(typeInteger);
|
||||||
}
|
}
|
||||||
return type;
|
}
|
||||||
|
return new SymbolTypeInline(potentialTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,7 +13,7 @@ public class ConstantString implements ConstantValue {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SymbolType getType(ProgramScope scope) {
|
public SymbolType getType(ProgramScope scope) {
|
||||||
return SymbolTypeBasic.STRING;
|
return SymbolType.STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getValue() {
|
public String getValue() {
|
||||||
@ -30,7 +30,7 @@ public class ConstantString implements ConstantValue {
|
|||||||
if (program == null) {
|
if (program == null) {
|
||||||
return "\"" + value + "\"";
|
return "\"" + value + "\"";
|
||||||
} else {
|
} 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
|
@JsonIgnore
|
||||||
public SymbolType getType() {
|
public SymbolType getType() {
|
||||||
return SymbolTypeBasic.LABEL;
|
return SymbolType.LABEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -70,9 +70,9 @@ public class Operator {
|
|||||||
public static Operator getUnary(String op) {
|
public static Operator getUnary(String op) {
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case "+":
|
case "+":
|
||||||
return UNARY_PLUS;
|
return POS;
|
||||||
case "-":
|
case "-":
|
||||||
return UNARY_MINUS;
|
return NEG;
|
||||||
case "++":
|
case "++":
|
||||||
return INCREMENT;
|
return INCREMENT;
|
||||||
case "--":
|
case "--":
|
||||||
@ -93,13 +93,13 @@ public class Operator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Operator getCastUnary(SymbolType castType) {
|
public static Operator getCastUnary(SymbolType castType) {
|
||||||
if (SymbolTypeBasic.BYTE.equals(castType)) {
|
if (SymbolType.BYTE.equals(castType)) {
|
||||||
return CAST_BYTE;
|
return CAST_BYTE;
|
||||||
} else if (SymbolTypeBasic.SBYTE.equals(castType)) {
|
} else if (SymbolType.SBYTE.equals(castType)) {
|
||||||
return CAST_SBYTE;
|
return CAST_SBYTE;
|
||||||
} else if (SymbolTypeBasic.WORD.equals(castType)) {
|
} else if (SymbolType.WORD.equals(castType)) {
|
||||||
return CAST_WORD;
|
return CAST_WORD;
|
||||||
} else if (SymbolTypeBasic.SWORD.equals(castType)) {
|
} else if (SymbolType.SWORD.equals(castType)) {
|
||||||
return CAST_SWORD;
|
return CAST_SWORD;
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Unknown cast type " + castType);
|
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 INCREMENT = new Operator("++", "_inc_", Type.UNARY, 1);
|
||||||
public static final Operator DECREMENT = new Operator("--", "_dec_", 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 POS = new Operator("+", "_pos_", Type.UNARY, 2);
|
||||||
public static final Operator UNARY_MINUS = new Operator("-", "_neg_", 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 BOOL_NOT = new Operator("~", "_not_", Type.UNARY, 2);
|
||||||
public static final Operator 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);
|
public static final Operator DEREF = new Operator("*", "_deref_", Type.UNARY, 2);
|
||||||
|
@ -41,6 +41,7 @@ public class Registers {
|
|||||||
ZP_BYTE, ZP_SBYTE,
|
ZP_BYTE, ZP_SBYTE,
|
||||||
ZP_PTR_BYTE,
|
ZP_PTR_BYTE,
|
||||||
ZP_WORD,
|
ZP_WORD,
|
||||||
|
ZP_SWORD,
|
||||||
ZP_BOOL,
|
ZP_BOOL,
|
||||||
CONSTANT
|
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. */
|
/** A zero page address used as a register for a boolean variable. */
|
||||||
public static class RegisterZpBool extends RegisterZp {
|
public static class RegisterZpBool extends RegisterZp {
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ public abstract class Scope implements Symbol {
|
|||||||
|
|
||||||
public VariableIntermediate addVariableIntermediate() {
|
public VariableIntermediate addVariableIntermediate() {
|
||||||
String name = "$" + intermediateVarCount++;
|
String name = "$" + intermediateVarCount++;
|
||||||
VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolTypeBasic.VAR);
|
VariableIntermediate symbol = new VariableIntermediate(name, this, SymbolType.VAR);
|
||||||
add(symbol);
|
add(symbol);
|
||||||
return symbol;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,127 @@
|
|||||||
package dk.camelot64.kickc.model;
|
package dk.camelot64.kickc.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
import java.util.ArrayList;
|
||||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
import java.util.Collection;
|
||||||
|
|
||||||
/** Symbol Types */
|
/** 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 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;
|
package dk.camelot64.kickc.model;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
|
|
||||||
/** Basic Symbol Types */
|
/** Basic Symbol Types */
|
||||||
public class SymbolTypeBasic implements SymbolType {
|
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;
|
private String typeName;
|
||||||
|
|
||||||
@JsonCreator
|
SymbolTypeBasic(String typeName) {
|
||||||
SymbolTypeBasic(
|
|
||||||
@JsonProperty("typeName") String typeName) {
|
|
||||||
this.typeName = typeName;
|
this.typeName = typeName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,19 +13,6 @@ public class SymbolTypeBasic implements SymbolType {
|
|||||||
return typeName;
|
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
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o) {
|
if (this == o) {
|
||||||
|
@ -5,6 +5,39 @@ package dk.camelot64.kickc.model;
|
|||||||
*/
|
*/
|
||||||
public class SymbolTypeInference {
|
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) {
|
public static SymbolType inferType(Operator operator, SymbolType subType) {
|
||||||
if (operator == null) {
|
if (operator == null) {
|
||||||
return subType;
|
return subType;
|
||||||
@ -16,21 +49,21 @@ public class SymbolTypeInference {
|
|||||||
throw new RuntimeException("Type error: Dereferencing a non-pointer " + subType);
|
throw new RuntimeException("Type error: Dereferencing a non-pointer " + subType);
|
||||||
}
|
}
|
||||||
} else if (Operator.LOWBYTE.equals(operator)) {
|
} else if (Operator.LOWBYTE.equals(operator)) {
|
||||||
if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) {
|
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
}
|
}
|
||||||
} else if (Operator.HIBYTE.equals(operator)) {
|
} else if (Operator.HIBYTE.equals(operator)) {
|
||||||
if (subType instanceof SymbolTypePointer || SymbolTypeBasic.WORD.equals(subType)) {
|
if (subType instanceof SymbolTypePointer || SymbolType.WORD.equals(subType)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
}
|
}
|
||||||
} else if (Operator.CAST_BYTE.equals(operator)) {
|
} else if (Operator.CAST_BYTE.equals(operator)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
} else if (Operator.CAST_SBYTE.equals(operator)) {
|
} else if (Operator.CAST_SBYTE.equals(operator)) {
|
||||||
return SymbolTypeBasic.SBYTE;
|
return SymbolType.SBYTE;
|
||||||
} else if (Operator.CAST_WORD.equals(operator)) {
|
} else if (Operator.CAST_WORD.equals(operator)) {
|
||||||
return SymbolTypeBasic.WORD;
|
return SymbolType.WORD;
|
||||||
} else if (Operator.CAST_SWORD.equals(operator)) {
|
} else if (Operator.CAST_SWORD.equals(operator)) {
|
||||||
return SymbolTypeBasic.SWORD;
|
return SymbolType.SWORD;
|
||||||
} else {
|
} else {
|
||||||
return subType;
|
return subType;
|
||||||
}
|
}
|
||||||
@ -38,6 +71,14 @@ public class SymbolTypeInference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static SymbolType inferType(SymbolType type1, Operator operator, SymbolType type2) {
|
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();
|
String op = operator.getOperator();
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case "==":
|
case "==":
|
||||||
@ -53,41 +94,17 @@ public class SymbolTypeInference {
|
|||||||
case "||":
|
case "||":
|
||||||
case "and":
|
case "and":
|
||||||
case "or":
|
case "or":
|
||||||
return SymbolTypeBasic.BOOLEAN;
|
return SymbolType.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);
|
|
||||||
case "*":
|
case "*":
|
||||||
if (type1 == null && type2 instanceof SymbolTypePointer) {
|
if (type1 == null && type2 instanceof SymbolTypePointer) {
|
||||||
return ((SymbolTypePointer) type2).getElementType();
|
return ((SymbolTypePointer) type2).getElementType();
|
||||||
}
|
}
|
||||||
if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) {
|
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
|
||||||
return SymbolTypeBasic.WORD;
|
return SymbolType.WORD;
|
||||||
} else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) {
|
} else if (isByte(type1) && isByte(type2)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
} else if (SymbolTypeBasic.SBYTE.equals(type1) && SymbolTypeBasic.SBYTE.equals(type2)) {
|
} else if (SymbolType.SBYTE.equals(type1) && SymbolType.SBYTE.equals(type2)) {
|
||||||
return SymbolTypeBasic.SBYTE;
|
return SymbolType.SBYTE;
|
||||||
}
|
}
|
||||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||||
case "*idx":
|
case "*idx":
|
||||||
@ -96,25 +113,25 @@ public class SymbolTypeInference {
|
|||||||
}
|
}
|
||||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||||
case "/":
|
case "/":
|
||||||
if (type1 instanceof SymbolTypePointer && SymbolTypeBasic.BYTE.equals(type2)) {
|
if (type1 instanceof SymbolTypePointer && isByte(type2)) {
|
||||||
return type1;
|
return type1;
|
||||||
}
|
}
|
||||||
case "&":
|
case "&":
|
||||||
case "|":
|
case "|":
|
||||||
case "^":
|
case "^":
|
||||||
if (SymbolTypeBasic.WORD.equals(type1) || SymbolTypeBasic.WORD.equals(type2)) {
|
if (SymbolType.WORD.equals(type1) || SymbolType.WORD.equals(type2)) {
|
||||||
return SymbolTypeBasic.WORD;
|
return SymbolType.WORD;
|
||||||
} else if (SymbolTypeBasic.BYTE.equals(type1) && SymbolTypeBasic.BYTE.equals(type2)) {
|
} else if (isByte(type1) && isByte(type2)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||||
case "<<":
|
case "<<":
|
||||||
case ">>":
|
case ">>":
|
||||||
if (SymbolTypeBasic.WORD.equals(type1)) {
|
if (SymbolType.WORD.equals(type1)) {
|
||||||
return SymbolTypeBasic.WORD;
|
return SymbolType.WORD;
|
||||||
} else if (SymbolTypeBasic.BYTE.equals(type1)) {
|
} else if (isByte(type1)) {
|
||||||
return SymbolTypeBasic.BYTE;
|
return SymbolType.BYTE;
|
||||||
}
|
}
|
||||||
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
throw new RuntimeException("Type inference case not handled " + type1 + " " + operator + " " + type2);
|
||||||
default:
|
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) {
|
public static SymbolType inferType(ProgramScope programScope, RValue rValue) {
|
||||||
SymbolType type = null;
|
SymbolType type = null;
|
||||||
if (rValue instanceof VariableRef) {
|
if (rValue instanceof VariableRef) {
|
||||||
@ -137,11 +258,11 @@ public class SymbolTypeInference {
|
|||||||
ConstantInteger rInt = (ConstantInteger) rValue;
|
ConstantInteger rInt = (ConstantInteger) rValue;
|
||||||
return rInt.getType(programScope);
|
return rInt.getType(programScope);
|
||||||
} else if (rValue instanceof ConstantString) {
|
} else if (rValue instanceof ConstantString) {
|
||||||
type = SymbolTypeBasic.STRING;
|
type = SymbolType.STRING;
|
||||||
} else if (rValue instanceof ConstantChar) {
|
} else if (rValue instanceof ConstantChar) {
|
||||||
type = SymbolTypeBasic.BYTE;
|
type = SymbolType.BYTE;
|
||||||
} else if (rValue instanceof ConstantBool) {
|
} else if (rValue instanceof ConstantBool) {
|
||||||
type = SymbolTypeBasic.BOOLEAN;
|
type = SymbolType.BOOLEAN;
|
||||||
} else if (rValue instanceof ConstantUnary) {
|
} else if (rValue instanceof ConstantUnary) {
|
||||||
ConstantUnary constUnary = (ConstantUnary) rValue;
|
ConstantUnary constUnary = (ConstantUnary) rValue;
|
||||||
SymbolType subType = inferType(programScope, constUnary.getOperand());
|
SymbolType subType = inferType(programScope, constUnary.getOperand());
|
||||||
@ -164,4 +285,5 @@ public class SymbolTypeInference {
|
|||||||
}
|
}
|
||||||
return type;
|
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);
|
scopeStack.push(procedure);
|
||||||
Label procExit = procedure.addLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
Label procExit = procedure.addLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
||||||
VariableUnversioned returnVar = null;
|
VariableUnversioned returnVar = null;
|
||||||
if (!SymbolTypeBasic.VOID.equals(type)) {
|
if (!SymbolType.VOID.equals(type)) {
|
||||||
returnVar = procedure.addVariable("return", type);
|
returnVar = procedure.addVariable("return", type);
|
||||||
}
|
}
|
||||||
List<Variable> parameterList = new ArrayList<>();
|
List<Variable> parameterList = new ArrayList<>();
|
||||||
@ -433,12 +433,12 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SymbolType visitTypeSimple(KickCParser.TypeSimpleContext ctx) {
|
public SymbolType visitTypeSimple(KickCParser.TypeSimpleContext ctx) {
|
||||||
return SymbolTypeBasic.get(ctx.getText());
|
return SymbolType.get(ctx.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SymbolType visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) {
|
public SymbolType visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx) {
|
||||||
return SymbolTypeBasic.get("signed " + ctx.SIMPLETYPE().getText());
|
return SymbolType.get("signed " + ctx.SIMPLETYPE().getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -55,7 +55,7 @@ public class Pass1ProcedureCallParameters extends ControlFlowGraphCopyVisitor {
|
|||||||
currentBlockScope = currentBlockSymbol.getScope();
|
currentBlockScope = currentBlockSymbol.getScope();
|
||||||
}
|
}
|
||||||
splitCurrentBlock(currentBlockScope.addLabelIntermediate().getRef());
|
splitCurrentBlock(currentBlockScope.addLabelIntermediate().getRef());
|
||||||
if(!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) {
|
if(!SymbolType.VOID.equals(procedure.getReturnType())) {
|
||||||
addStatementToCurrentBlock(new StatementAssignment(origCall.getlValue(), procReturnVarRef));
|
addStatementToCurrentBlock(new StatementAssignment(origCall.getlValue(), procReturnVarRef));
|
||||||
} else {
|
} else {
|
||||||
// No return type. Remove variable receiving the result.
|
// No return type. Remove variable receiving the result.
|
||||||
|
@ -32,7 +32,7 @@ public class Pass1ProcedureCallsReturnValue extends ControlFlowGraphCopyVisitor
|
|||||||
copyCall.setProcedure(procedureRef);
|
copyCall.setProcedure(procedureRef);
|
||||||
addStatementToCurrentBlock(copyCall);
|
addStatementToCurrentBlock(copyCall);
|
||||||
getCurrentBlock().setCallSuccessor(procedure.getLabel().getRef());
|
getCurrentBlock().setCallSuccessor(procedure.getLabel().getRef());
|
||||||
if (!SymbolTypeBasic.VOID.equals(procedure.getReturnType())) {
|
if (!SymbolType.VOID.equals(procedure.getReturnType())) {
|
||||||
// Find return variable final version
|
// Find return variable final version
|
||||||
Label returnBlockLabel = procedure.getLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
Label returnBlockLabel = procedure.getLabel(SymbolRef.PROCEXIT_BLOCK_NAME);
|
||||||
ControlFlowBlock returnBlock = program.getGraph().getBlock(returnBlockLabel.getRef());
|
ControlFlowBlock returnBlock = program.getGraph().getBlock(returnBlockLabel.getRef());
|
||||||
|
@ -36,20 +36,17 @@ public class Pass1TypeInference {
|
|||||||
LValue lValue = assignment.getlValue();
|
LValue lValue = assignment.getlValue();
|
||||||
if (lValue instanceof VariableRef) {
|
if (lValue instanceof VariableRef) {
|
||||||
Variable symbol = programScope.getVariable((VariableRef) lValue);
|
Variable symbol = programScope.getVariable((VariableRef) lValue);
|
||||||
if (SymbolTypeBasic.VAR.equals(symbol.getType())) {
|
if (SymbolType.VAR.equals(symbol.getType())) {
|
||||||
// Unresolved symbol - perform inference
|
// Unresolved symbol - perform inference
|
||||||
Operator operator = assignment.getOperator();
|
Operator operator = assignment.getOperator();
|
||||||
if (operator == null || assignment.getrValue1() == null) {
|
if (operator == null || assignment.getrValue1() == null) {
|
||||||
// Copy operation or Unary operation
|
// Copy operation or Unary operation
|
||||||
RValue rValue = assignment.getrValue2();
|
RValue rValue = assignment.getrValue2();
|
||||||
SymbolType subType = SymbolTypeInference.inferType(programScope, rValue);
|
SymbolType type = SymbolTypeInference.inferType(programScope, operator, rValue);
|
||||||
SymbolType type = SymbolTypeInference.inferType(operator, subType);
|
|
||||||
symbol.setTypeInferred(type);
|
symbol.setTypeInferred(type);
|
||||||
} else {
|
} else {
|
||||||
// Binary operation
|
// Binary operation
|
||||||
SymbolType type1 = SymbolTypeInference.inferType(programScope, assignment.getrValue1());
|
SymbolType type = SymbolTypeInference.inferType(programScope, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2());
|
||||||
SymbolType type2 = SymbolTypeInference.inferType(programScope, assignment.getrValue2());
|
|
||||||
SymbolType type = SymbolTypeInference.inferType(type1, operator, type2);
|
|
||||||
symbol.setTypeInferred(type);
|
symbol.setTypeInferred(type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,7 @@ public class Pass4CodeGeneration {
|
|||||||
String asmElement = AsmFragment.getAsmConstant(program, element, 99, scopeRef);
|
String asmElement = AsmFragment.getAsmConstant(program, element, 99, scopeRef);
|
||||||
asmElements.add(asmElement);
|
asmElements.add(asmElement);
|
||||||
}
|
}
|
||||||
if(SymbolTypeBasic.BYTE.equals(constantArray.getElementType())) {
|
if(SymbolType.isByte(constantArray.getElementType())) {
|
||||||
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements);
|
asm.addDataNumeric(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmElements);
|
||||||
added.add(asmName);
|
added.add(asmName);
|
||||||
} else {
|
} else {
|
||||||
|
@ -67,7 +67,7 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
|||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
// Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes)
|
// 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;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
// Be unhappy (if this triggers in the future extend with ability to create new names by adding suffixes)
|
// 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -134,18 +134,23 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
|||||||
*/
|
*/
|
||||||
private Registers.Register allocateNewRegisterZp(Variable variable) {
|
private Registers.Register allocateNewRegisterZp(Variable variable) {
|
||||||
SymbolType varType = variable.getType();
|
SymbolType varType = variable.getType();
|
||||||
if (varType.equals(SymbolTypeBasic.BYTE)) {
|
if (SymbolType.isByte(varType)) {
|
||||||
return new Registers.RegisterZpByte(currentZp++);
|
return new Registers.RegisterZpByte(currentZp++);
|
||||||
} else if (varType.equals(SymbolTypeBasic.SBYTE)) {
|
} else if (SymbolType.isSByte(varType)) {
|
||||||
return new Registers.RegisterZpSignedByte(currentZp++);
|
return new Registers.RegisterZpSignedByte(currentZp++);
|
||||||
} else if (varType.equals(SymbolTypeBasic.WORD)) {
|
} else if (SymbolType.isWord(varType)) {
|
||||||
Registers.RegisterZpWord registerZpWord =
|
Registers.RegisterZpWord registerZpWord =
|
||||||
new Registers.RegisterZpWord(currentZp);
|
new Registers.RegisterZpWord(currentZp);
|
||||||
currentZp = currentZp + 2;
|
currentZp = currentZp + 2;
|
||||||
return registerZpWord;
|
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++);
|
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
|
// No need to setRegister register for VOID value
|
||||||
return null;
|
return null;
|
||||||
} else if (varType instanceof SymbolTypePointer) {
|
} else if (varType instanceof SymbolTypePointer) {
|
||||||
|
@ -24,6 +24,10 @@ public class TestPrograms extends TestCase {
|
|||||||
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
|
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testZpptr() throws IOException, URISyntaxException {
|
||||||
|
compileAndCompare("zpptr");
|
||||||
|
}
|
||||||
|
|
||||||
public void testCasting() throws IOException, URISyntaxException {
|
public void testCasting() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("casting");
|
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) {
|
void plot(byte x, byte y) {
|
||||||
byte* plotter_x = 0;
|
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_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_x = plot_xlo[x];
|
||||||
>plotter_y = plot_yhi[y];
|
>plotter_y = plot_yhi[y];
|
||||||
|
@ -51,7 +51,7 @@ const byte[] plot_bit = $1400;
|
|||||||
|
|
||||||
void plot(byte x, byte y) {
|
void plot(byte x, byte y) {
|
||||||
byte* plotter_x = 0;
|
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_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_x = plot_xlo[x];
|
||||||
>plotter_y = plot_yhi[y];
|
>plotter_y = plot_yhi[y];
|
||||||
|
@ -1,13 +1,26 @@
|
|||||||
byte* SCREEN = $0400;
|
byte* SCREEN = $0400;
|
||||||
byte* SCREEN2 = $0600;
|
byte* SCREEN2 = SCREEN+40*3;
|
||||||
|
byte* SCREEN3 = SCREEN+40*6;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
for( byte b: 0..100) {
|
for( byte b: 0..100) {
|
||||||
byte b2 = 100-b; // Subtract byte from byte (not signed)
|
//Subtract unsigned byte from unsigned byte
|
||||||
SCREEN2[b] = b2;
|
byte b2 = 200-b;
|
||||||
|
SCREEN[b] = b2;
|
||||||
|
// Cast unsigned byte to signed byte & negate
|
||||||
signed byte sb = - (signed byte)b;
|
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 [ ] )
|
[1] phi() [ ] ( main:0 [ ] )
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@1: scope:[main] from main main::@5
|
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
|
to:main::@2
|
||||||
main::@2: scope:[main] from main::@1 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 ] )
|
[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 ] )
|
[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
|
to:main::@5
|
||||||
main::@5: scope:[main] from main::@2
|
main::@5: scope:[main] from main::@2
|
||||||
[7] (byte) main::i#1 ← ++ (byte) main::i#4 [ main::i#1 ] ( main:0 [ main::i#1 ] )
|
[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
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@5 main::@7
|
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
|
to:main::@4
|
||||||
main::@4: scope:[main] from main::@3 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 }
|
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 ] )
|
[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 ] )
|
[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
|
to:main::@7
|
||||||
main::@7: scope:[main] from main::@4
|
main::@7: scope:[main] from main::@4
|
||||||
[15] (byte) main::k#1 ← ++ (byte) main::k#4 [ main::k#1 ] ( main:0 [ main::k#1 ] )
|
[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
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@7
|
main::@return: scope:[main] from main::@7
|
||||||
[17] return [ ] ( main:0 [ ] )
|
[17] return [ ] ( main:0 [ ] )
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
|||||||
(label) @begin
|
(label) @begin
|
||||||
(label) @end
|
(label) @end
|
||||||
(byte*) SCREEN
|
(byte*) SCREEN
|
||||||
(const byte*) SCREEN#0 SCREEN = (word) 1024
|
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@2
|
(label) main::@2
|
||||||
|
@ -5,10 +5,10 @@
|
|||||||
to:@end
|
to:@end
|
||||||
@end: scope:[] from @10
|
@end: scope:[] from @10
|
||||||
main: scope:[main] from @10
|
main: scope:[main] from @10
|
||||||
[1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
[1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||||
[2] *((const byte*) FGCOL#0) ← (byte) 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) 3 [ ] ( 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) 24 [ ] ( main:0 [ ] )
|
[4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] )
|
||||||
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main
|
main::@3: scope:[main] from main
|
||||||
@ -27,11 +27,11 @@ lines: scope:[lines] from main::@1
|
|||||||
[10] phi() [ ] ( main:0::lines:7 [ ] )
|
[10] phi() [ ] ( main:0::lines:7 [ ] )
|
||||||
to:lines::@1
|
to:lines::@1
|
||||||
lines::@1: scope:[lines] from lines lines::@3
|
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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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::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::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 ] )
|
[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
|
to:line_ydxi::@1
|
||||||
line_ydxi::@1: scope:[line_ydxi] from line_ydxi line_ydxi::@2
|
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 ] )
|
[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 ] )
|
[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
|
to:line_ydxi::@5
|
||||||
line_ydxi::@5: scope:[line_ydxi] from line_ydxi::@1
|
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 ] )
|
[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 ] )
|
[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
|
to:line_ydxi::@3
|
||||||
line_ydxi::@3: scope:[line_ydxi] from line_ydxi::@5
|
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 ] )
|
[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
|
to:line_ydxi::@2
|
||||||
line_ydxi::@2: scope:[line_ydxi] from line_ydxi::@3 line_ydxi::@5
|
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::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 ] )
|
[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 ] )
|
[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
|
to:line_ydxi::@return
|
||||||
line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2
|
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::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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 + (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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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::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::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 ] )
|
[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
|
to:line_xdyi::@1
|
||||||
line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2
|
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 ] )
|
[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 ] )
|
[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
|
to:line_xdyi::@5
|
||||||
line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1
|
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 ] )
|
[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 ] )
|
[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
|
to:line_xdyi::@3
|
||||||
line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5
|
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 ] )
|
[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
|
to:line_xdyi::@2
|
||||||
line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5
|
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::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 ] )
|
[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 ] )
|
[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
|
to:line_xdyi::@return
|
||||||
line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2
|
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::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::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 ] )
|
[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
|
to:line_ydxd::@1
|
||||||
line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2
|
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 ] )
|
[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 ] )
|
[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
|
to:line_ydxd::@5
|
||||||
line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1
|
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 ] )
|
[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 ] )
|
[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
|
to:line_ydxd::@3
|
||||||
line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5
|
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 ] )
|
[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
|
to:line_ydxd::@2
|
||||||
line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5
|
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::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 ] )
|
[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 ] )
|
[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
|
to:line_ydxd::@return
|
||||||
line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2
|
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::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::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 ] )
|
[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
|
to:line_xdyd::@1
|
||||||
line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2
|
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 ] )
|
[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 ] )
|
[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
|
to:line_xdyd::@5
|
||||||
line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1
|
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 ] )
|
[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 ] )
|
[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
|
to:line_xdyd::@3
|
||||||
line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5
|
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 ] )
|
[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
|
to:line_xdyd::@2
|
||||||
line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5
|
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::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 ] )
|
[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 ] )
|
[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
|
to:line_xdyd::@return
|
||||||
line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2
|
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 [ ] )
|
[160] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||||
to:init_plot_tables::@1
|
to:init_plot_tables::@1
|
||||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
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::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) 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 ] )
|
[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) 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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
[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
|
to:init_plot_tables::@2
|
||||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
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 ] )
|
[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
|
to:init_plot_tables::@3
|
||||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
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::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) 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) 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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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) 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 ] )
|
[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
|
to:init_plot_tables::@7
|
||||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
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
|
to:init_plot_tables::@4
|
||||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
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 ] )
|
[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 ] )
|
[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
|
to:init_plot_tables::@return
|
||||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||||
[184] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
[184] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||||
@ -342,15 +342,15 @@ init_screen: scope:[init_screen] from main
|
|||||||
to:init_screen::@1
|
to:init_screen::@1
|
||||||
init_screen::@1: scope:[init_screen] from init_screen 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 ] )
|
[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 ] )
|
[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
|
to:init_screen::@2
|
||||||
init_screen::@2: scope:[init_screen] from init_screen::@1 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 ] )
|
[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 ] )
|
[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
|
to:init_screen::@return
|
||||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||||
[194] return [ ] ( main:0::init_screen:5 [ ] )
|
[194] return [ ] ( main:0::init_screen:5 [ ] )
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,13 +4,13 @@
|
|||||||
(byte*) BGCOL
|
(byte*) BGCOL
|
||||||
(const byte*) BGCOL#0 BGCOL = (word) 53280
|
(const byte*) BGCOL#0 BGCOL = (word) 53280
|
||||||
(byte*) BITMAP
|
(byte*) BITMAP
|
||||||
(const byte*) BITMAP#0 BITMAP = (word) 8192
|
(const byte*) BITMAP#0 BITMAP = (word/signed word) 8192
|
||||||
(byte) BMM
|
(byte) BMM
|
||||||
(const byte) BMM#0 BMM = (byte) 32
|
(const byte) BMM#0 BMM = (byte/signed byte/word/signed word) 32
|
||||||
(byte*) COLS
|
(byte*) COLS
|
||||||
(const byte*) COLS#0 COLS = (word) 55296
|
(const byte*) COLS#0 COLS = (word) 55296
|
||||||
(byte) CSEL
|
(byte) CSEL
|
||||||
(const byte) CSEL#0 CSEL = (byte) 8
|
(const byte) CSEL#0 CSEL = (byte/signed byte/word/signed word) 8
|
||||||
(byte*) D011
|
(byte*) D011
|
||||||
(const byte*) D011#0 D011 = (word) 53265
|
(const byte*) D011#0 D011 = (word) 53265
|
||||||
(byte*) D016
|
(byte*) D016
|
||||||
@ -18,19 +18,19 @@
|
|||||||
(byte*) D018
|
(byte*) D018
|
||||||
(const byte*) D018#0 D018 = (word) 53272
|
(const byte*) D018#0 D018 = (word) 53272
|
||||||
(byte) DEN
|
(byte) DEN
|
||||||
(const byte) DEN#0 DEN = (byte) 16
|
(const byte) DEN#0 DEN = (byte/signed byte/word/signed word) 16
|
||||||
(byte) ECM
|
(byte) ECM
|
||||||
(const byte) ECM#0 ECM = (byte) 64
|
(const byte) ECM#0 ECM = (byte/signed byte/word/signed word) 64
|
||||||
(byte*) FGCOL
|
(byte*) FGCOL
|
||||||
(const byte*) FGCOL#0 FGCOL = (word) 53281
|
(const byte*) FGCOL#0 FGCOL = (word) 53281
|
||||||
(byte) MCM
|
(byte) MCM
|
||||||
(const byte) MCM#0 MCM = (byte) 16
|
(const byte) MCM#0 MCM = (byte/signed byte/word/signed word) 16
|
||||||
(byte) RSEL
|
(byte) RSEL
|
||||||
(const byte) RSEL#0 RSEL = (byte) 8
|
(const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word) 8
|
||||||
(byte) RST8
|
(byte) RST8
|
||||||
(const byte) RST8#0 RST8 = (byte) 128
|
(const byte) RST8#0 RST8 = (byte/word/signed word) 128
|
||||||
(byte*) SCREEN
|
(byte*) SCREEN
|
||||||
(const byte*) SCREEN#0 SCREEN = (word) 1024
|
(const byte*) SCREEN#0 SCREEN = (word/signed word) 1024
|
||||||
(byte*) SCROLL
|
(byte*) SCROLL
|
||||||
(const byte*) SCROLL#0 SCROLL = (word) 53270
|
(const byte*) SCROLL#0 SCROLL = (word) 53270
|
||||||
(void()) init_plot_tables()
|
(void()) init_plot_tables()
|
||||||
@ -267,11 +267,11 @@
|
|||||||
(byte) lines::l#1 l zp ZP_BYTE:2 151.5
|
(byte) lines::l#1 l zp ZP_BYTE:2 151.5
|
||||||
(byte) lines::l#2 l zp ZP_BYTE:2 60.6
|
(byte) lines::l#2 l zp ZP_BYTE:2 60.6
|
||||||
(byte) lines_cnt
|
(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
|
(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
|
(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()
|
(void()) main()
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@3
|
(label) main::@3
|
||||||
@ -290,9 +290,9 @@
|
|||||||
(byte*) plot::plotter_x
|
(byte*) plot::plotter_x
|
||||||
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:8 2.0
|
(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_x#2 plotter_x zp ZP_PTR_BYTE:8 0.8
|
||||||
(byte*) plot::plotter_y
|
(word) plot::plotter_y
|
||||||
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:11 2.0
|
(word) plot::plotter_y#1 plotter_y zp ZP_WORD:11 2.0
|
||||||
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:11 4.0
|
(word) plot::plotter_y#2 plotter_y zp ZP_WORD:11 4.0
|
||||||
(byte) plot::x
|
(byte) plot::x
|
||||||
(byte) plot::x#0 reg byte x 11.0
|
(byte) plot::x#0 reg byte x 11.0
|
||||||
(byte) plot::x#1 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#3 reg byte y 22.0
|
||||||
(byte) plot::y#4 reg byte y 6.857142857142857
|
(byte) plot::y#4 reg byte y 6.857142857142857
|
||||||
(byte[]) plot_bit
|
(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
|
(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
|
(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
|
(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
|
(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: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 ]
|
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::$0 ]
|
||||||
reg byte a [ plot::$1 ]
|
reg byte a [ plot::$1 ]
|
||||||
reg byte a [ plot::$2 ]
|
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::$3 ]
|
||||||
reg byte a [ plot::$5 ]
|
reg byte a [ plot::$5 ]
|
||||||
reg byte a [ plot::$6 ]
|
reg byte a [ plot::$6 ]
|
||||||
|
@ -5,17 +5,17 @@
|
|||||||
to:@end
|
to:@end
|
||||||
@end: scope:[] from @5
|
@end: scope:[] from @5
|
||||||
main: scope:[main] from @5
|
main: scope:[main] from @5
|
||||||
[1] *((const byte*) BGCOL#0) ← (byte) 0 [ ] ( main:0 [ ] )
|
[1] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:0 [ ] )
|
||||||
[2] *((const byte*) FGCOL#0) ← (byte) 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) 3 [ ] ( 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) 24 [ ] ( main:0 [ ] )
|
[4] *((const byte*) D018#0) ← (byte/signed byte/word/signed word) 24 [ ] ( main:0 [ ] )
|
||||||
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
[5] call init_screen param-assignment [ ] ( main:0 [ ] )
|
||||||
to:main::@5
|
to:main::@5
|
||||||
main::@5: scope:[main] from main
|
main::@5: scope:[main] from main
|
||||||
[6] call init_plot_tables param-assignment [ ] ( main:0 [ ] )
|
[6] call init_plot_tables param-assignment [ ] ( main:0 [ ] )
|
||||||
to:main::@2
|
to:main::@2
|
||||||
main::@2: scope:[main] from main::@2 main::@5 main::@7
|
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
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[8] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
|
[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 [ ] )
|
[13] phi() [ ] ( main:0::plots:9 [ ] )
|
||||||
to:plots::@1
|
to:plots::@1
|
||||||
plots::@1: scope:[plots] from plots plots::@3
|
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 ] )
|
[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 ] )
|
[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 ] )
|
[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
|
to:@return
|
||||||
plot: scope:[plot] from plots::@1
|
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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 + (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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 [ ] )
|
[36] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||||
to:init_plot_tables::@1
|
to:init_plot_tables::@1
|
||||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
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::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) 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 ] )
|
[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) 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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
|
[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
|
to:init_plot_tables::@2
|
||||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
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 ] )
|
[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
|
to:init_plot_tables::@3
|
||||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
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::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) 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) 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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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 ] )
|
[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) 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 ] )
|
[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
|
to:init_plot_tables::@7
|
||||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
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
|
to:init_plot_tables::@4
|
||||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
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 ] )
|
[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 ] )
|
[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
|
to:init_plot_tables::@return
|
||||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||||
[60] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
[60] return [ ] ( main:0::init_plot_tables:6 [ ] )
|
||||||
@ -111,15 +111,15 @@ init_screen: scope:[init_screen] from main
|
|||||||
to:init_screen::@1
|
to:init_screen::@1
|
||||||
init_screen::@1: scope:[init_screen] from init_screen 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 ] )
|
[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 ] )
|
[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
|
to:init_screen::@2
|
||||||
init_screen::@2: scope:[init_screen] from init_screen::@1 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 ] )
|
[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 ] )
|
[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
|
to:init_screen::@return
|
||||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||||
[70] return [ ] ( main:0::init_screen:5 [ ] )
|
[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…
Reference in New Issue
Block a user