Re: Rotating through a four-bit nibble
"Jordan Bradford" <[email protected]>
| Newsgroups | gmane.comp.hardware.lego.robotics |
|---|---|
| Organization | None |
| Message-ID | <[email protected]> |
In lugnet.robotics, Kevin L. Clague wrote: > In lugnet.robotics, Jordan Bradford wrote: >> In lugnet.robotics, Geoffrey Hyde wrote: >>> >>> "Jordan Bradford" <[email protected]> wrote in >>> message news:[email protected]... >>>> In lugnet.robotics, Kevin L. Clague wrote: >>>> Why in the world wouldn't the firmware support shifting? The hardware >>>> <http://www.delorie.com/gnu/docs/binutils/as_236.html certainly does>. >>>> >>>> Heh, using multiply and divide to simulate shifting is kind of backwards. >>> >>> The problem is, multiplication and division to a binary CPU, as is the case >>> here, is just a whole series of instructions. >>> >>> Here is the basic principle explained, partway down the page: >>> >>> http://www.evergreen.edu/biophysics/technotes/misc/bin_math.htm >>> >>> A link to binary addition and subtraction, from HowStuffWorks article on >>> binary (it's actually a framed link to a different site, may have to cut >>> out the frame addition if it doesn't work properly), note how it >>> essentially works the same as decimal multiplication/division - also >>> partway down the page. >>> >>> http://computer.howstuffworks.com/framed.htm?parent=bytes.htm&url=http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary.html >>> >>> Hope this helps you understand it better! :) > > Kev >> >> Understand what better? Binary math? No problems with that! > > Nice to hear from another bit twiddler.... > >> >> By "backwards" I meant that multiplication and division by powers of 2 are >> usually changed to shift L/R by compilers. Also, I am amused that because >> the firmware doesn't use the H8/300's shift instructions for whatever >> reason, people are now trying to write software simulations of a trivial >> hardware operation. > > I do find it ironic that the firmware suports bitwise AND and OR, but not > XOR, and also not shifts. Gack! > > Well, at least we're not having to use loops to add things to themselves to > simulate multiplying by a power of two! With that limitation we'd be creating a register (or Turing) machine simulator, too. It would be interesting to see a real-world processor that only has increment and decrement instructions. I'm thinking the LEGO firmware doesn't support these other instructions because the RCX language (and ROBOLAB [?], which I've never used) isn't likely to need them, so they saved space by not including them.