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

Needs explanation of an assembly snippet

Hello,

I am having trouble understanding the goal of the second add.w instruction in the snippet below:

...
add.w r1, r4, r5
add.w r1, r1, r1, lsr #0x1f
asr r1, r1, #1
...

I imagine it may have to do with a potential overflow on the first addition. The asr indicates a signed division.
So, assuming the following signed variables, it would be:

signed int r1
r1 = r4 + r5
r1 = r1 + (r1<0 ? 1: 0)
r1 = r1 / 2

I do not understand the reason for that check. As anyone seen this kind of idiom before? What could it be used for?

Thank you.

Parents
  • This is called machine language. To make sure we don’t need to read and write programs using bits, every instruction will also have a ”natural language” equivalent, called the assembly language notation !

Reply
  • This is called machine language. To make sure we don’t need to read and write programs using bits, every instruction will also have a ”natural language” equivalent, called the assembly language notation !

Children
No data