void loop() {
os_intr_lock();
WRITE_PERI_REG( 0x60000304, myPinBit );
WRITE_PERI_REG( 0x60000308, myPinBit );
WRITE_PERI_REG( 0x60000304, myPinBit );
WRITE_PERI_REG( 0x60000308, myPinBit );
WRITE_PERI_REG( 0x60000304, myPinBit );
WRITE_PERI_REG( 0x60000308, myPinBit );
WRITE_PERI_REG( 0x60000304, myPinBit );
WRITE_PERI_REG( 0x60000308, myPinBit );
os_intr_unlock();
}
is compiled as
00000000 <loop-0x10>:
0: 000304 excw
3: 030860 excw
6: 006000 rsil a0, 0
9: 000000 ill
c: 000000 ill
...
00000010 <loop>:
10: f0c112 addi a1, a1, -16
13: 036102 s32i a0, a1, 12
16: fffc01 l32r a0, 8 <loop-0x8>
19: 0000c0 callx0 a0
1c: fff941 l32r a4, 0 <loop-0x10>
1f: 022c movi.n a2, 32
21: fff831 l32r a3, 4 <loop-0xc>
24: 0020c0 memw
27: 0429 s32i.n a2, a4, 0
29: 0020c0 memw
2c: 0329 s32i.n a2, a3, 0
2e: 0020c0 memw
31: 0429 s32i.n a2, a4, 0
33: 0020c0 memw
36: 0329 s32i.n a2, a3, 0
38: 0020c0 memw
3b: 0429 s32i.n a2, a4, 0
3d: 0020c0 memw
40: 0329 s32i.n a2, a3, 0
42: 0020c0 memw
45: 0429 s32i.n a2, a4, 0
47: 0020c0 memw
4a: 0329 s32i.n a2, a3, 0
4c: fff001 l32r a0, c <loop-0x4>
4f: 0000c0 callx0 a0
52: 3108 l32i.n a0, a1, 12
54: 10c112 addi a1, a1, 16
57: f00d ret.n
or with code source mixing that reads as
void loop() {
os_intr_lock();
WRITE_PERI_REG( 0x60000304, myPinBit );
24: 0020c0 memw
27: 0429 s32i.n a2, a4, 0
WRITE_PERI_REG( 0x60000308, myPinBit );
29: 0020c0 memw
2c: 0329 s32i.n a2, a3, 0
WRITE_PERI_REG( 0x60000304, myPinBit );
2e: 0020c0 memw
31: 0429 s32i.n a2, a4, 0
WRITE_PERI_REG( 0x60000308, myPinBit );
33: 0020c0 memw
36: 0329 s32i.n a2, a3, 0
WRITE_PERI_REG( 0x60000304, myPinBit );
38: 0020c0 memw
3b: 0429 s32i.n a2, a4, 0
WRITE_PERI_REG( 0x60000308, myPinBit );
3d: 0020c0 memw
40: 0329 s32i.n a2, a3, 0
WRITE_PERI_REG( 0x60000304, myPinBit );
42: 0020c0 memw
45: 0429 s32i.n a2, a4, 0
WRITE_PERI_REG( 0x60000308, myPinBit );
47: 0020c0 memw
4a: 0329 s32i.n a2, a3, 0
os_intr_unlock();
4c: fff001 l32r a0, c <loop-0x4>
4f: 0000c0 callx0 a0
}
52: 3108 l32i.n a0, a1, 12
54: 10c112 addi a1, a1, 16
57: f00d ret.n
and if I make it only 1 ON, 1 OFF
void loop() {
os_intr_lock();
WRITE_PERI_REG( 0x60000304, myPinBit );
WRITE_PERI_REG( 0x60000308, myPinBit );
os_intr_unlock();
}
then it's
00000000 <loop-0x10>:
0: 000304 excw
3: 030860 excw
6: 006000 rsil a0, 0
9: 000000 ill
c: 000000 ill
...
00000010 <loop>:
10: f0c112 addi a1, a1, -16
13: 036102 s32i a0, a1, 12
16: fffc01 l32r a0, 8 <loop-0x8>
19: 0000c0 callx0 a0
1c: fff931 l32r a3, 0 <loop-0x10>
1f: 022c movi.n a2, 32
21: 0020c0 memw
24: 0329 s32i.n a2, a3, 0
26: fff731 l32r a3, 4 <loop-0xc>
29: 0020c0 memw
2c: 0329 s32i.n a2, a3, 0
2e: fff701 l32r a0, c <loop-0x4>
31: 0000c0 callx0 a0
34: 3108 l32i.n a0, a1, 12
36: 10c112 addi a1, a1, 16
39: f00d ret.n
while void loop() {
os_intr_lock();
WRITE_PERI_REG( 0x60000304, 0x20 );
WRITE_PERI_REG( 0x60000308, 0x20 );
os_intr_unlock();
}
generates
00000000 <loop-0x10>:
0: 000304 excw
3: 030860 excw
6: 006000 rsil a0, 0
9: 000000 ill
c: 000000 ill
...
00000010 <loop>:
10: f0c112 addi a1, a1, -16
13: 036102 s32i a0, a1, 12
16: fffc01 l32r a0, 8 <loop-0x8>
19: 0000c0 callx0 a0
1c: fff931 l32r a3, 0 <loop-0x10>
1f: 022c movi.n a2, 32
21: 0020c0 memw
24: 0329 s32i.n a2, a3, 0
26: fff731 l32r a3, 4 <loop-0xc>
29: 0020c0 memw
2c: 0329 s32i.n a2, a3, 0
2e: fff701 l32r a0, c <loop-0x4>
31: 0000c0 callx0 a0
34: 3108 l32i.n a0, a1, 12
36: 10c112 addi a1, a1, 16
39: f00d ret.n
and finally
void loop() {
WRITE_PERI_REG( 0x60000304, 0x20 );
WRITE_PERI_REG( 0x60000308, 0x20 );
}
is
00000000 <loop-0x8>:
0: 000304 excw
3: 030860 excw
6: 316000 srai a6, a0, 16
00000008 <loop>:
8: fffe31 l32r a3, 0 <loop-0x8>
b: 022c movi.n a2, 32
d: 0020c0 memw
10: 0329 s32i.n a2, a3, 0
12: fffc31 l32r a3, 4 <loop-0x4>
15: 0020c0 memw
18: 0329 s32i.n a2, a3, 0
1a: f00d ret.n