World: r3wp
[rebcode] Rebcode discussion
older newer | first last |
BrianH 23-Feb-2007 [1989] | At the very least you should have seperate macros for 16-bit reads from and writes to memory, rather than a combination of 8-bit ops. |
Steeve 23-Feb-2007 [1990x3] | but i'm afraid that synchronization of 16bits registers with the 8bits (transfer of values) cause an overhead |
what u gain in one side, u lost it in the other side | |
synchronisation needs more operations | |
BrianH 23-Feb-2007 [1993] | How does that overhead compare to that of doing it the straight-forward way? Remember that every loop of the interpreter is overhead. |
Steeve 23-Feb-2007 [1994x11] | moreover , i'm not that writing/reading a word in memory is more faster than to write/read 1 byte 2 times |
*i'm not sure | |
i explain | |
because instructions in rebcode are different | |
i have to test | |
to write a word, u need to use change | |
and you need to build a binary data | |
for example to write 01 and 02 , you need to build the serie #{0102} | |
u see what i mean ? | |
u can not just write a 16 bit value like that | |
i could handle 16 bit registers directly in binary series | |
BrianH 23-Feb-2007 [2005] | Yeah, that is likely slower. You are likely to have to do some bytewise reads and writes internally. You would be faster if you had seperate read/write macros for the 16-bit load/store instructions. |
Steeve 23-Feb-2007 [2006x3] | hu ? |
what are you saying ? | |
i said that the faster way is to write 2 times 8bit instead of writing 16 bit in one time | |
BrianH 23-Feb-2007 [2009] | I was agreeing. |
Steeve 23-Feb-2007 [2010x3] | so there is no optimization to have different macro for access/writing 16bit or 8bits registers |
ah ok | |
'scuse me | |
BrianH 23-Feb-2007 [2013] | I wonder if there would be a fast way to cache the 16-bit values in _HL, _BC and such, and writing them quickly. |
Steeve 23-Feb-2007 [2014x2] | that could be faster if 16 bits register was handled internally as binary series |
but that will be a problem to perform math operation on them | |
BrianH 23-Feb-2007 [2016] | It occurs to me that overflow on these inserts isn't handled the way you think. |
Steeve 23-Feb-2007 [2017x2] | ? |
explain | |
BrianH 23-Feb-2007 [2019] | If you poke a value over 255 into a string/binary, the upper bytes may be ignored rather that triggering an overflow error. Test that. |
Steeve 23-Feb-2007 [2020] | ok |
BrianH 23-Feb-2007 [2021] | It might save on some AND x 255 statements. |
Steeve 23-Feb-2007 [2022] | could be a usefull trick if it works |
BrianH 23-Feb-2007 [2023] | It doesn't work in REBOL code, but it might in rebcode. |
Steeve 23-Feb-2007 [2024x4] | you're right |
the upper byte of 16bit value is not kept | |
hum | |
so i could remove some and var 255 from my code | |
BrianH 23-Feb-2007 [2028] | That provides a way to optimize the 16-bit load/store ops, particularly if there are 16-bit registers. |
Steeve 23-Feb-2007 [2029] | hmm... |
BrianH 23-Feb-2007 [2030] | You could invalidate the affected 16-bit register if you use an 8-bit op, or perhaps combine 2 8-bit load/stores that would add up to a 16-bit load/store into their 16-bit operation. |
Steeve 23-Feb-2007 [2031] | perhaps... |
BrianH 23-Feb-2007 [2032x2] | This would be so much easier without self-modifying code - then we could just compile the code and be done with it. |
BTW, don't forget the ROTL and ROTR opcodes. They may help with 16-bit combination registers. | |
Steeve 23-Feb-2007 [2034x5] | hum, i think that write/read the 16bits register into/from memory need more instructions if i follow you |
because we perform 2 read/write ,even for 16bits registers, right ? | |
currently to write _bc register in memory , i write: pokez mem adr _c add.i adr 1 pokez mem adr _b | |
if _bc is handle as a 16 bit value, i need to do: pokez mem adr _bc add.i adr 1 rotr _bc 8 pokez mem adr _bc rotl _bc 8 | |
right ? | |
older newer | first last |