/* * min — меньший из двух int16_t. * __sdcccall(1): a в HL, b в DE; возврат в DE. * * FIXME: сравнение через `cp` беззнаковое — для отрицательных * аргументов результат неверный (min(-1,1) вернёт 1). Унаследовано * из minmax.c до сплита; см. docs/libc-roadmap.md. */ #include int16_t min(int16_t a, int16_t b) __naked { (void)a; (void)b; __asm ld a, h cp d jr c, min_less jr nz, min_greater ld a, l cp e jr c, min_less min_greater: ret /* DE уже содержит b */ min_less: ex de, hl ret __endasm; }