mirror of
https://github.com/irmen/prog8.git
synced 2024-11-26 11:49:22 +00:00
vm: fix comparisons codegen
This commit is contained in:
parent
86cc2f1075
commit
30c2e3e8ff
@ -283,8 +283,8 @@ internal class ExpressionGen(private val codeGen: CodeGen) {
|
|||||||
"^", "xor" -> operatorXor(binExpr, vmDt, resultRegister)
|
"^", "xor" -> operatorXor(binExpr, vmDt, resultRegister)
|
||||||
"<<" -> operatorShiftLeft(binExpr, vmDt, resultRegister)
|
"<<" -> operatorShiftLeft(binExpr, vmDt, resultRegister)
|
||||||
">>" -> operatorShiftRight(binExpr, vmDt, resultRegister, signed)
|
">>" -> operatorShiftRight(binExpr, vmDt, resultRegister, signed)
|
||||||
"==" -> operatorEquals(binExpr, vmDt, resultRegister, true)
|
"==" -> operatorEquals(binExpr, vmDt, resultRegister, false)
|
||||||
"!=" -> operatorEquals(binExpr, vmDt, resultRegister, false)
|
"!=" -> operatorEquals(binExpr, vmDt, resultRegister, true)
|
||||||
"<" -> operatorLessThan(binExpr, vmDt, resultRegister, signed, false)
|
"<" -> operatorLessThan(binExpr, vmDt, resultRegister, signed, false)
|
||||||
">" -> operatorGreaterThan(binExpr, vmDt, resultRegister, signed, false)
|
">" -> operatorGreaterThan(binExpr, vmDt, resultRegister, signed, false)
|
||||||
"<=" -> operatorLessThan(binExpr, vmDt, resultRegister, signed, true)
|
"<=" -> operatorLessThan(binExpr, vmDt, resultRegister, signed, true)
|
||||||
|
@ -219,7 +219,6 @@ sub str2word(str string) -> word {
|
|||||||
sub hex2uword(str string) -> uword {
|
sub hex2uword(str string) -> uword {
|
||||||
; -- hexadecimal string (with or without '$') to uword.
|
; -- hexadecimal string (with or without '$') to uword.
|
||||||
; stops parsing at the first character that's not a hex digit (except leading $)
|
; stops parsing at the first character that's not a hex digit (except leading $)
|
||||||
; TODO fix this result
|
|
||||||
uword result
|
uword result
|
||||||
ubyte char
|
ubyte char
|
||||||
if @(string)=='$'
|
if @(string)=='$'
|
||||||
@ -240,7 +239,6 @@ sub hex2uword(str string) -> uword {
|
|||||||
sub bin2uword(str string) -> uword {
|
sub bin2uword(str string) -> uword {
|
||||||
; -- binary string (with or without '%') to uword.
|
; -- binary string (with or without '%') to uword.
|
||||||
; stops parsing at the first character that's not a 0 or 1. (except leading %)
|
; stops parsing at the first character that's not a 0 or 1. (except leading %)
|
||||||
; TODO fix this result
|
|
||||||
uword result
|
uword result
|
||||||
ubyte char
|
ubyte char
|
||||||
if @(string)=='%'
|
if @(string)=='%'
|
||||||
|
@ -3,8 +3,6 @@ TODO
|
|||||||
|
|
||||||
For next release
|
For next release
|
||||||
^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^
|
||||||
- vm: fix if @(string)=='$' string++ not working on ea31
|
|
||||||
- vm: fix conv hex2uword and bin2uword
|
|
||||||
- vm: implement float div, minus, plus
|
- vm: implement float div, minus, plus
|
||||||
- vm: implement float type casts to integer types
|
- vm: implement float type casts to integer types
|
||||||
- vm: implement float any, all, reverse, sort
|
- vm: implement float any, all, reverse, sort
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
main {
|
main {
|
||||||
sub start() {
|
sub start() {
|
||||||
|
|
||||||
ubyte ub = conv.str2ubyte("234")
|
ubyte ub = conv.str2ubyte("234")
|
||||||
txt.print_ub(ub)
|
txt.print_ub(ub)
|
||||||
txt.nl()
|
txt.nl()
|
||||||
|
Loading…
Reference in New Issue
Block a user