r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[rebcode] Rebcode discussion

Steeve
24-Feb-2007
[2075x3]
but in fact it can be occured in one opcode of  length 1, if the 
adress is already contained in one 16 bit register .
that's mostly the case
so, the correct answer is: 1
BrianH
24-Feb-2007
[2078]
What happens if you EXT8 a value that already has data in the higher 
bytes? I'm guessing it will just overwrite that data...
Steeve
24-Feb-2007
[2079]
wrong
BrianH
24-Feb-2007
[2080x2]
What happens? I don't have rebcode here to test.
I'm going off docs and memory here.
Steeve
24-Feb-2007
[2082x4]
ext8 (128 + 65536) = -128 instead of 128
fooooollll
no it works
ext 128 = -128
BrianH
24-Feb-2007
[2086x3]
I'm thinking that you may be able to efficiently store your 8-bit 
registers in your 16-bit registers and break them out when you need 
them.
Internally, they would really be 32-bit registers, of course.
Is the accumulator internally 8 or 16-bit?
Steeve
24-Feb-2007
[2089x3]
8
it is A
_a in my source
BrianH
24-Feb-2007
[2092]
What do 16-bit arithmetic instructions use for an accumulator?
Steeve
24-Feb-2007
[2093x2]
HL
but most of instructions act on A
BrianH
24-Feb-2007
[2095]
Is 8-bit or 16-bit code more common?
Steeve
24-Feb-2007
[2096x6]
8 bit
because it's more compact and faster
and many operations occur only on 8 bit registers
like rotation operations
and bit manipulations
but the first reason is that 8bit register operations are faster
BrianH
24-Feb-2007
[2102x2]
Well, there is no reason to change that balance - the code expects 
it. 16-bit operations can be sped up using a few tricks if necessary, 
like temporary registers that are used internally. You can even name 
those registers _bc, _de and _hl if you like :)
Do the rotation instructions affect the carry flag?
Steeve
24-Feb-2007
[2104x5]
some of them, it's an option
the carry flag can be injected to the left or to the right
or not
there are 12 different rotations
Z80 is good with rotation
BrianH
24-Feb-2007
[2109]
How does your code handle exchanges?
Steeve
24-Feb-2007
[2110x3]
badly
label EXX
	set.i tmp _b set.i _b _b' set.i _b' tmp 
	set.i tmp _c set.i _c _c' set.i _c' tmp
	set.i tmp _d set.i _d _d' set.i _d' tmp
	set.i tmp _e set.i _e _e' set.i _e' tmp
	set.i tmp _h set.i _h _h' set.i _h' tmp
	set.i tmp _l set.i _l _l' set.i _l' tmp
	(cont)
exchange of  b, c, d ,e , h , l, with b' , c', d', e', h', l'
BrianH
24-Feb-2007
[2113]
It could be worse.
Steeve
24-Feb-2007
[2114]
i don't see how :-)
BrianH
24-Feb-2007
[2115]
You could be accessing all of those values indirectly to make the 
swap easier, but slowing down everything else :)
Steeve
24-Feb-2007
[2116x2]
yeah or i could build another instance of the interpreter and swap 
them
Mwahahaha
BrianH
24-Feb-2007
[2118]
I thought of that, except in my head it was a second set of BRAB 
blocks :)
Steeve
24-Feb-2007
[2119]
so, to conclude this session, Rebcode needs union handling and swap 
instruction.
BrianH
24-Feb-2007
[2120x2]
I was thinking vectors and opcodes to handle the struct! type, but 
a swap instruction would be nice too.
I would love a REBOL native swap instruction that worked like block 
set, but we all have dreams :)
Steeve
24-Feb-2007
[2122]
good night Brian
BrianH
24-Feb-2007
[2123x2]
Limited use though.
Good night.