Код
#pragma inline=forced
static void inline f(uint8_t i)
{
while(--i)
asm("");
}
int main()
{
f(10);
}
В результате:
Код
183 int main()
184 {
\ main:
\ 000000 52 01 SUB SP, #0x1
186 f(10);
\ 000002 35 0A .... MOV S:?b0, #0xa
\ 000006 20 00 JRA L:??main_0
\ ??main_1:
\ ??main_0:
\ 000008 B6 .. LD A, S:?b0
\ 00000A 4A DEC A
\ 00000B B7 .. LD S:?b0, A
\ 00000D 26 F9 JRNE L:??main_1
ЗАЧЕМ? Зачем он делает всё это????
Настройки компилятора по полной программе: Multi-file compilation, High, Speed +No size constraints
P.S.
Cosmic же на много толковее справился, хотя я конечно по прежнему не понимаю почему нельзя просто с регистром A работать.... Зачем в стек то?
Код
60 .text: section .text,new
61 0000 _main:
63 0000 88 push a
64 00000001 OFST: set 1
67 ; 10 f(12);
70 0001 a60c ld a,#12
71 0003 6b01 ld (OFST+0,sp),a
74 0005 L72:
75 ; 5 _asm("");
79 ; 4 while(--i)
81 0005 0a01 dec (OFST+0,sp)
83 0007 26fc jrne L72
///////////////////////////////////////////////
84 0009 L73:
86 0009 20fe jra L73
99 xdef _main
118 end
The truth is out there...