How data processes in microprocesser ??

Feb 27, 2014 6 Replies

Hi all,


I was going through the source code of some embedded application where I saw a code written like



uint16_t opcode = (0x08


Which would not relieve a conforming C compiler from jumping through whatever hoops needed to perform an actual shift by 10.

I agree with Simon, most likely this was intended to provide some sort of clarity/documentation.

A second, and lesser, possibility is a very poor compiler that optimized the double shift form better, perhaps by generating a 2 bit shift and then a byte move, as opposed to a (perhaps very) slow 10 bit shift.

20 years ago your "very poor" compiler would have been about par for the course for embedded C. Giving the compiler clues like that was pretty normal.

Now, it just gets in the way of readability, and sometimes messes up the optimizer (when it's a more complicated "clue" than that one).

Tim Wescott Control system and signal processing consulting www.wescottdesign.com

But it's a compile time known constant, so surely the compiler would just evaluate the expression at compile time and just place the final result in the generated code.

Back in the 1990s (your twenty years ago) I was writing LL(1) recursive descent based compilers and that was normal behaviour even in the simple compilers I was writing then.

Perhaps the original author wanted to make clear what bit pattern lives in the top 8 bits of the opcode.

Simon.

Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world

I was using some pretty simple-minded compilers. And some good ones. I recall spending a lot more time dodging compiler oddities than I do now.

That could be, too. Certainly with a modern compiler that's the only excuse.

Tim Wescott Control system and signal processing consulting www.wescottdesign.com

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required