RPI SOFTWARE LICENSE TOOL CODE
Short version - mostly, you can use either (or a mixture of both as long as you only use the same instruction set within one block of code and use bx/blx to jump between blocks that use a different instruction set). TL DR version - Just use ARM mode, but expect your assembler to barf on ARMv7 operands.
I apologise for sounding snappy, it was late and I got all defensive. Not a Reduced Set of Instructions as opposed to a Complex Set of Instructions, and left the weird bits of grey out. Maybe I should have said its Set of Reduced Instructions, as opposed to a Set of Complex Instructions. I probably should have been more careful in what I said, this more started as my standard gut response to people conflating the idea of RISC with have less instructions, which was never what it was meant to mean. Yes that's something I can definitely agree with and I realise that most RISCs no longer stick strictly to the single memory cycle, but its definitely different to the 50 or 60 memory cycle instruction proliferation liberally sprinkled around the x86 instruction set. RISC / CISC processors is now more of a continuum - everybody agrees on the extremes, and can discuss at length on the middle ground. I haven't done anything with the Cortex stuff, so I didn't know that, thanks. The ARM Cortex-M3 processor does have hardware divide (2-12 Cycles). I'm having and idle day, so this is more chit-chat that anything of substance. Quote from hamster on November 25, 2011, 01:43 Many ARM applications have been high-volume consumer devices like cell phones, so the cost of hand-assembling critical code is shared over a large number of copies. ARMv7 has a lot of these, but they are useful for DSP and graphics. Instructions that are hard for a compiler to use are good targets for omission. That sure helped DEC's demise.Īnother hallmark of RISC is being easy to compile into. But it's a far cry from the DEC VAX which had instruction lengths from 1 to 60 bytes. This is harder with Thumb-2 where 16-bit and 32-bit instructions may be interleaved, though a decoded instruction buffer takes care of this. This is vastly simplified by having all instructions the same length so the decoder knows where to find upcoming instructions. IMO, one of the key hallmarks of RISC machines is ease of pipelining and multiple instruction issue. Few data types in hardware, some CISCs have byte string instructions, or support complex numbers this is so far unlikely to be found on a RISC.
Simple addressing modes, with complex addressing performed via sequences of arithmetic and/or load-store operations.Ĥ. Identical general purpose registers, allowing any register to be used in any context, simplifying compiler design (although normally there are separate floating point registers). Uniform instruction format, using a single word with the opcode in the same bit positions in every instruction, demanding less decoding. Even so, PowerPC is not a trivial instruction set: the name stands for Performance Optimization With Enhanced RISC.ĪFAIK, there is no strict definition of RISC versus CISC, but I pretty much agree with :ġ. So PowerPC was quite mature before it ever got to the chip level. Yes, wire-wrap can be that fast as long as you use twisted pairs for clocks and other critical signals. This is quite different from IBM's PowerPC where the instruction set was simulated to death before building anything, and the first PowerPC implementation was ECL wire-wrap (80 MHz IIRC). Thumb and Thumb-2 made things really interesting. For example, early ARM only had loads and stores for 32-bit longs and 8-bit unsigned bytes, so loads and stores for 16-bit shorts and 8-bit signed were later squeezed into gaps in the original instruction set. The instruction set evolved over the decades. And it's a far cry from the PDP-11 where proper geeks could disassemble an octal dump in their heads. Writing a (dis)assembler for ARMv7 is pretty challenging. ARMv7 lists multiple instruction formats for individual instructions, but not for the instruction set as a whole. Back in the ARMv5 days they still had a list of instruction formats. If you think assembly language is complicated, take a look the machine language encodings. Makes some CISC processors look quite trivial!ĪRM was RISC at one time. Quote from dpawson on November 24, 2011, 15:45