mirror of
https://github.com/irmen/prog8.git
synced 2025-02-04 02:30:19 +00:00
check float bits
This commit is contained in:
parent
c59df6ec20
commit
3cce985f03
@ -20,7 +20,13 @@ class VirtualMachineDefinition: IMachineDefinition {
|
||||
override lateinit var zeropage: Zeropage // not actually used
|
||||
override lateinit var golden: GoldenRam // not actually used
|
||||
|
||||
override fun getFloatAsmBytes(num: Number) = TODO("float asm bytes from number")
|
||||
override fun getFloatAsmBytes(num: Number): String {
|
||||
// little endian binary representation
|
||||
val bits = num.toFloat().toBits().toUInt()
|
||||
val hexStr = bits.toString(16).padStart(8, '0')
|
||||
val parts = hexStr.chunked(2).map { "\$" + it }
|
||||
return parts.joinToString(", ")
|
||||
}
|
||||
|
||||
override fun importLibs(compilerOptions: CompilationOptions, compilationTargetName: String): List<String> {
|
||||
return listOf("syslib")
|
||||
|
@ -4,6 +4,9 @@ import io.kotest.matchers.collections.shouldBeEmpty
|
||||
import io.kotest.matchers.shouldBe
|
||||
import prog8.code.core.*
|
||||
import prog8.code.target.VMTarget
|
||||
import prog8.code.target.c64.C64MachineDefinition
|
||||
import prog8.code.target.cx16.CX16MachineDefinition
|
||||
import prog8.code.target.virtual.VirtualMachineDefinition
|
||||
import prog8.intermediate.*
|
||||
import prog8.vm.VirtualMachine
|
||||
import prog8.vm.VmRunner
|
||||
@ -132,4 +135,14 @@ class TestVm: FunSpec( {
|
||||
"""
|
||||
runner.runProgram(irSource)
|
||||
}
|
||||
|
||||
test("vm machine float bits") {
|
||||
val cx16machine = CX16MachineDefinition()
|
||||
cx16machine.getFloatAsmBytes(Math.PI) shouldBe "\$82, \$49, \$0f, \$da, \$a2"
|
||||
val c64machine = C64MachineDefinition()
|
||||
c64machine.getFloatAsmBytes(Math.PI) shouldBe "\$82, \$49, \$0f, \$da, \$a2"
|
||||
|
||||
val vm = VirtualMachineDefinition()
|
||||
vm.getFloatAsmBytes(Math.PI) shouldBe "\$40, \$49, \$0f, \$db"
|
||||
}
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user