We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi Experts,
What is the key difference between the following directives
.thumb
.thumb_func
.force_thumb
.thumb_set
What is the exact use case where the above things can to be applied ?
Regards,
Techguyz
In addition to the above excellent answers, you really should know that...
Put a .thumb_func right before each symbol in your code that you have a pointer to.
For instance, if you don't have a .thumb_func before your SysTick_Handler, the pointer in the exception vectors will be incorrect (it'll point to an even address instead of an odd address).
You may also have your own jump-table - or state machine table, or the like.. Those symbols that are placed in the table, should have the .thumb_func right before them.
You can...
find_end_l:
ldrb r0,[r1],#1
find_end:
cmp r0,#0
bne find_end_l
bx lr
-That means, the .thumb_func directive is 'transparent', it just serves as a way to mark the next symbol to be a thumb function symbol.
Normally I place both of these ...
.type mySymbol,%function
mySymbol:
... right before the functions I declare.