Page 1 of 1

Arm Programming Problem

PostPosted: Feb 3, 2004 @ 5:10am
by leolau
I want to convert a C function into ARM function. But the arm function doesn't work. Please have a look and tell me what's wrong. Thank!!

C function:

#define MK_RGB565(R,G,B) ((MAX(0,MIN(255, R)) << 8) & 0xf800)
|\((MAX(0,MIN(255, G)) << 3) & 07e0)
|\((MAX(0,MIN(255, B)) >> 3) & 0x001f)

*(uint16_t *) dst = MK_RGB565(r, g, b);

ARM function:
; extern "C" void MKRGB(unsigned char* dst, int r, int g, int b);
;
mov r7, #0

mov r4, r1
mov r5, r2
mov r6, r3

cmp r4, #0
movlt r4, #0
cmp r4, #255
movgt r4, #255

cmp r5, #0
movlt r5, #0
cmp r5, #255
movgt r5, #255

cmp r6, #0
movlt r6, #0
cmp r6, #255
movgt r6, #255

mov r4, r4, LSL #8
and r7, r4, #0x0000f800

mov r5, r5, LSL #3
and r7, r5, #0x000007e0

mov r6, r6, LSR #3
and r7, r6, #0x0000001f

strh r7, [r0]

Re: Arm Programming Problem

PostPosted: Feb 3, 2004 @ 8:31am
by Kak

PostPosted: Feb 3, 2004 @ 11:15am
by leolau