80386 Barrel Shifter
nand2mario.github.io
80386 Barrel Shifter
1–10 of 14 posts
Re: 80386 Barrel Shifter
#2Is the full microcode available anywhere?
Re: 80386 Barrel Shifter
#3Implementing rotate through carry like that was a really bad decision IMO - it's almost never by more than one bit left or right at a time, and this could be done much more efficiently than with the constant-time code which is only faster when the count is > 6. Is the full microcode available anywhere?
Re: 80386 Barrel Shifter
#4Implementing rotate through carry like that was a really bad decision IMO - it's almost never by more than one bit left or right at a time, and this could be done much more efficiently than with the constant-time code which is only faster when the count is > 6. Is the full microcode available anywhere?
Since the shifter is also used for bit tests, the 'most things are a 1-bit shift' might not be the case. Perhaps they did the analysis and it made sense.
Re: 80386 Barrel Shifter
#5Implementing rotate through carry like that was a really bad decision IMO - it's almost never by more than one bit left or right at a time, and this could be done much more efficiently than with the constant-time code which is only faster when the count is > 6. Is the full microcode available anywhere?
Re: 80386 Barrel Shifter
#6Implementing rotate through carry like that was a really bad decision IMO - it's almost never by more than one bit left or right at a time, and this could be done much more efficiently than with the constant-time code which is only faster when the count is > 6. Is the full microcode available anywhere?
Since the shifter is also used for bit tests, the 'most things are a 1-bit shift' might not be the case. Perhaps they did the analysis and it made sense.
And the microcode for bit test has to be different anyway.
Re: 80386 Barrel Shifter
#7I wonder what is the use case for testing a bit outside of the memory address given.
Re: 80386 Barrel Shifter
#8> For memory operands, there's an additional twist: the bit index is a signed offset that can address bits outside the nominal operand. A bit index of 35 on a dword accesses bit 3 of the next dword in memory. I wonder what is the use case for testing a bit outside of the memory address given.
Re: 80386 Barrel Shifter
#9> For memory operands, there's an additional twist: the bit index is a signed offset that can address bits outside the nominal operand. A bit index of 35 on a dword accesses bit 3 of the next dword in memory. I wonder what is the use case for testing a bit outside of the memory address given.
Re: 80386 Barrel Shifter
#10> For memory operands, there's an additional twist: the bit index is a signed offset that can address bits outside the nominal operand. A bit index of 35 on a dword accesses bit 3 of the next dword in memory. I wonder what is the use case for testing a bit outside of the memory address given.
So you can have bit arrays of any length in memory, rather than just 32 bits in a register.