用arm汇编编写了一个程序,已经在linux下调通,用的是arm-linux-gcc-4.4.3。
现在想移植到wince下,但是需要搭建交叉编译环境,该怎么搭建,什么工具,如何设置,求助!
google只有linnux下的,说明书里面也没介绍,请大牛指教!
如果不能在wince下搭建环境的话,linux下的gcc-arm可编译的如下汇编改怎么改写才能在arm下编译:
.global GetVLCSymbol
.data
mask: .int 0x00000000, 0x00000001, 0x00000003, 0x00000007
.int 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f
.int 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff
.int 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff
.int 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff
.int 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff
.int 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff
.int 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff
.int 0xffffffff
.text
GetVLCSymbol:
stmfd sp!, {r4-r11}
ldr r2, [r1] /* bits_input->bit_stream */
ldr r3, [r1, #4] /* bits_input->byte_pos */
ldr r4, [r1, #8] /* bitoffset = bits_input->bit_pos */
ldr r5, [r1, #12] /* curr4byte = bits_input->curr4byte */
mov r6, #0 /* bitcounter = 0 */
mov r7, #1
ands r8, r5, r7, lsl r4 /* ctr_bit = (curr4byte & (0x01<<bitoffset)) */
bne _end_loop_get_ctr_bit
_loop_get_ctr_bit:
subs r4, r4, #1
movlt r4, #7 /* bitoffset = 7 */
addlt r3, r3, #1 /* byte_pos ++ */
ldrlt r5, [r2, r3] /* curr4byte = bits_input->bit_stream[bits_input->byte_pos] */
add r6, r6, #1
ands r8, r5, r7, lsl r4
beq _loop_get_ctr_bit
_end_loop_get_ctr_bit:
subs r4, r4, #1
movlt r4, #7 /* bitoffset = 7 */
addlt r3, r3, #1 /* byte_pos ++ */
ldrlt r5, [r2, r3] /* curr4byte = bits_input->bit_stream[bits_input->byte_pos] */
movs r8, r6
movle r11, #0
ble _end_if_bitcounter_le_0
sub r9, r4, r8
adds r9, r9, #1
mov r10, #0
ldr r7, =mask
bge _end_loop_sh_ge_0
_loop_sh_lt_0:
rsb r8, r9, #0
add r9, r4, #1
ldr r11, [r7, r9, lsl #2]
and r11, r5, r11
orr r10, r10, r11, lsl r8
mov r4, #7
add r3, r3, #1
ldr r5, [r2, r3]
rsbs r9, r8, #8
blt _loop_sh_lt_0
_end_loop_sh_ge_0:
ldr r11, [r7, r8, lsl #2]
and r11, r11, r5, lsr r9
orr r11, r10, r11
subs r4, r4, r8
movlt r4, #7 /* bitoffset = 7 */
addlt r3, r3, #1 /* byte_pos ++ */
ldrlt r5, [r2, r3] /* curr4byte = bits_input->bit_stream[bits_input->byte_pos] */
_end_if_bitcounter_le_0:
str r11, [r0]
str r3, [r1, #4]
str r4, [r1, #8]
str r5, [r1, #12]
mov r0, r6
ldmfd sp!, {r4-r11}
mov r12, #10
mov pc, lr
.end
[ 此帖被hdzhang在2011-11-26 23:20重新编辑 ]