The Super Loop (Infinite Loop)
(Redirected from Infinite Loop)
Jump to navigation
Jump to search
Discussion about syntax
Using a while loop
while (1) { ++loop_cnt; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
Disassembles to:
117 ++loop_cnt; 08000664: ldr r2, [pc, #12] @ (0x8000674 <main+40>) 08000666: ldr r3, [r2, #0] 08000668: adds r3, #1 0800066a: str r3, [r2, #0] 115 while (1) { 0800066c: b.n 0x8000664 <main+24>
Using a for loop
for (;;) { ++loop_cnt; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
Disassembles to:
117 ++loop_cnt; 08000664: ldr r2, [pc, #12] @ (0x8000674 <main+40>) 08000666: ldr r3, [r2, #0] 08000668: adds r3, #1 0800066a: str r3, [r2, #0] 115 for (;;) { 0800066c: b.n 0x8000664 <main+24>
Having fun
Alternatives can be imagined - presumably making it more readable. First option would be a strategically placed comment:
for (;/* ever */;) { ++loop_cnt; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
A macro could also be used.
#define forever for (;;) forever { ++loop_cnt; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }