mirror of
https://github.com/irmen/prog8.git
synced 2024-11-18 19:12:44 +00:00
rename
This commit is contained in:
parent
063bcf17d8
commit
2f1f20ea11
@ -171,14 +171,14 @@ internal class AugmentableAssignmentAsmGen(private val program: Program,
|
||||
is IdentifierReference -> {
|
||||
val pointer = memory.addressExpression as IdentifierReference
|
||||
when {
|
||||
valueLv != null -> inplaceModification_byte_litval_to_memory(pointer, operator, valueLv.toInt())
|
||||
ident != null -> inplaceModification_byte_variable_to_memory(pointer, operator, ident)
|
||||
valueLv != null -> inplaceModification_byte_litval_to_pointer(pointer, operator, valueLv.toInt())
|
||||
ident != null -> inplaceModification_byte_variable_to_pointer(pointer, operator, ident)
|
||||
// TODO more specialized code for types such as memory read etc.
|
||||
value is TypecastExpression -> {
|
||||
if (tryRemoveRedundantCast(value, target, operator)) return
|
||||
inplaceModification_byte_value_to_memory(pointer, operator, value)
|
||||
inplaceModification_byte_value_to_pointer(pointer, operator, value)
|
||||
}
|
||||
else -> inplaceModification_byte_value_to_memory(pointer, operator, value)
|
||||
else -> inplaceModification_byte_value_to_pointer(pointer, operator, value)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
@ -239,7 +239,7 @@ internal class AugmentableAssignmentAsmGen(private val program: Program,
|
||||
return false
|
||||
}
|
||||
|
||||
private fun inplaceModification_byte_value_to_memory(pointervar: IdentifierReference, operator: String, value: Expression) {
|
||||
private fun inplaceModification_byte_value_to_pointer(pointervar: IdentifierReference, operator: String, value: Expression) {
|
||||
if(asmgen.options.slowCodegenWarnings)
|
||||
println("warning: slow stack evaluation used (3): @(${pointervar.nameInSource.last()}) $operator= ${value::class.simpleName} at ${value.position}") // TODO
|
||||
asmgen.translateExpression(value)
|
||||
@ -291,7 +291,7 @@ internal class AugmentableAssignmentAsmGen(private val program: Program,
|
||||
asmgen.out(" inx")
|
||||
}
|
||||
|
||||
private fun inplaceModification_byte_variable_to_memory(pointervar: IdentifierReference, operator: String, value: IdentifierReference) {
|
||||
private fun inplaceModification_byte_variable_to_pointer(pointervar: IdentifierReference, operator: String, value: IdentifierReference) {
|
||||
val otherName = asmgen.asmVariableName(value)
|
||||
val (ptrOnZp, sourceName) = asmgen.loadByteFromPointerIntoA(pointervar)
|
||||
|
||||
@ -331,7 +331,7 @@ internal class AugmentableAssignmentAsmGen(private val program: Program,
|
||||
asmgen.out(" sta (P8ZP_SCRATCH_W1),y")
|
||||
}
|
||||
|
||||
private fun inplaceModification_byte_litval_to_memory(pointervar: IdentifierReference, operator: String, value: Int) {
|
||||
private fun inplaceModification_byte_litval_to_pointer(pointervar: IdentifierReference, operator: String, value: Int) {
|
||||
when (operator) {
|
||||
// note: ** (power) operator requires floats.
|
||||
"+" -> {
|
||||
|
@ -2,6 +2,7 @@
|
||||
TODO
|
||||
====
|
||||
|
||||
- check cpu stack consistency in all examples
|
||||
- reduce the amount of translateExpression() calls when the result can be directly assigned to register or variable
|
||||
- make it possible to use cpu opcodes such as 'nop' as variable names by prefixing all asm vars with something such as '_'
|
||||
- option to load the built-in library files from a directory instead of the embedded ones (for easier library development/debugging)
|
||||
|
@ -8,17 +8,14 @@ main {
|
||||
|
||||
uword uw = %1111111110000001
|
||||
uword uw2 = %000111100001110
|
||||
ubyte ub = %00001110
|
||||
ubyte ub = 30
|
||||
|
||||
uw &= ub + 1
|
||||
txt.print_uwbin(uw, 0)
|
||||
txt.chrout('\n')
|
||||
uw |= ub+1
|
||||
txt.print_uwbin(uw, 0)
|
||||
txt.chrout('\n')
|
||||
uword addr = $c000
|
||||
|
||||
uw ^= ub+1
|
||||
txt.print_uwbin(uw, 0)
|
||||
@(addr) = 0
|
||||
@(addr) ++
|
||||
@(addr) += 2*(ub+3)
|
||||
txt.print_uw(@(addr))
|
||||
txt.chrout('\n')
|
||||
|
||||
testX()
|
||||
|
Loading…
Reference in New Issue
Block a user