Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
ARM shifting instruction with register shift length
Locked
Locked
Replies
2 replies
Subscribers
119 subscribers
Views
2466 views
Users
0 members are here
Options
Share
More actions
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
ARM shifting instruction with register shift length
pgbackup pgbackup
over 12 years ago
Note: This was originally posted on 26th October 2009 at
http://forums.arm.com
Hi,
For fun, I'm trying to write RTL for my own processor implementing the ARM v4 ISA. I have a question regarding the ARM shifting operation. In one of the addressing mode, I see that it is possible to get the shift length from a "fourth" register RS. (RN= first operand, RM=second operand, RD = destination). Thus, RM will be shifted depending upon the value of RS[7:0].
My question is how is this done? All the docs/books that I have been reading indicate that the register file has two read ports/one write ports for all register and three read/two write ports for the PC counter (r15). In the floor plan of the book by Furber, I see only a PC bus, A/B bus, and ALU result bus. The only way I can think about getting RS is the register file will have to have another port for this third operand in the register access stage. However, its seems that this port will only be utilized by the shifting operation and never be used in other instructions. Is there something I'm missing here?
I was thinking of implementing the class 5 stage pipeline except break down the execute into two stage: shift operand calculation + ALU. Thanks for any information.
Kind regards.
0
Quote