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

The volatile modifier adds instructions

The volatile modifier adds instructions to expand the variable to a 32-bit value (UXTB, UXTH, SXTB, SXTH).
It doesn't make sense. checking code online

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdint.h"
struct _st
{
uint8_t a;
volatile uint8_t b;
}st;
uint32_t test(uint8_t c)
{
uint8_t out;
if(st.a > c) out = st.a;
else out = st.b;
return out;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
код
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
test:
ldr r2, .L3
ldrb r3, [r2] //reading st.a
cmp r3, r0
bhi .L2
ldrb r3, [r2, #1] //reading st.b
uxtb r3, r3 // <<<<<
.L2:
mov r0, r3
bx lr
.L3:
.word .LANCHOR0
st:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0