А конкретно вот это: А может все таки ключик есть, а? 32 разрадное слово:
void inline l_32w( unsigned int data, unsigned int addr){
*(unsigned int *)addr = (unsigned int)data;
}
@ Generated by gcc 2.95.3 20010315 (release) for ARM/elf
.file "32w.c"
gcc2_compiled.:
.text
.align 2
.global l_32w
.type l_32w,function
l_32w:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 1, current_function_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
str r0, [r1, #0]
ldmea fp, {fp, sp, pc}
.Lfe1:
.size l_32w,.Lfe1-l_32w
.ident "GCC: (GNU) 2.95.3 20010315 (release)"
Для 16 битного слова:
void inline l_16h( unsigned short data, unsigned int addr){
*(unsigned short *)addr = (unsigned short)data;
}
@ Generated by gcc 2.95.3 20010315 (release) for ARM/elf
.file "16h.c"
gcc2_compiled.:
.text
.align 2
.global l_16h
.type l_16h,function
l_16h:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 1, current_function_anonymous_args = 0
mov ip, sp
stmfd sp!, {fp, ip, lr, pc}
sub fp, ip, #4
mov r0, r0, asl #16
mov r0, r0, lsr #16
strb r0, [r1, #0]
mov r0, r0, asr #8
strb r0, [r1, #1]
ldmea fp, {fp, sp, pc}
.Lfe1:
.size l_16h,.Lfe1-l_16h
.ident "GCC: (GNU) 2.95.3 20010315 (release)"
И тут мы явно видем, что в 16 бит она выводит 2 раза по 8!!!!