> Trust the compiler
NO !
:-)
--------------------------------------------------------------------
$ gcc -O3 -S test.c
$ cat test.s
.file "test.c"
.text
.p2align 4,,15
.globl uint32_read_unaligned
.type uint32_read_unaligned, @function
uint32_read_unaligned:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl 8(%ebp), %eax
movl (%eax), %eax
leave
ret
.size uint32_read_unaligned, .-uint32_read_unaligned
.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5"
.section .note.GNU-stack,"",@progbits
-----------------------------------------------------------------------------------------
$ mips-linux-gcc -O3 -S test.c
$ cat test.s
.file 1 "test.c"
.section .mdebug.abi32
.previous
.abicalls
.text
.align 2
.globl uint32_read_unaligned
.ent uint32_read_unaligned
.type uint32_read_unaligned, @function
uint32_read_unaligned:
.frame $sp,24,$31 # vars= 8, regs= 1/0, args= 0, extra= 8
.mask 0x10000000,-8
.fmask 0x00000000,0
.set noreorder
.cpload $25
.set reorder
subu $sp,$sp,24
.cprestore 0
lwl $2,0($4)
lwr $2,3($4)
swl $2,8($sp)
swr $2,11($sp)
lw $2,8($sp)
sw $28,16($sp)
.set noreorder
.set nomacro
j $31
addu $sp,$sp,24
.set macro
.set reorder
.end uint32_read_unaligned
.ident "GCC: (GNU) 3.3.6"
-----------------------------------------------------------------------------------------
$ mips-linux-gnu-gcc -O3 -S test.c
$ cat test.s
.file 1 "test.c"
.section .mdebug.abi32
.previous
.gnu_attribute 4, 1
.abicalls
.option pic0
.text
.align 2
.globl uint32_read_unaligned
.ent uint32_read_unaligned
.type uint32_read_unaligned, @function
uint32_read_unaligned:
.set nomips16
.frame $sp,8,$31 # vars= 8, regs= 0/0, args= 0, gp= 0
.mask 0x00000000,0
.fmask 0x00000000,0
.set noreorder
.set nomacro
lwl $2,0($4)
addiu $sp,$sp,-8
addiu $sp,$sp,8
j $31
lwr $2,3($4)
.set macro
.set reorder
.end uint32_read_unaligned
.ident "GCC: (Sourcery G++ Lite 4.3-154) 4.3.3"
-----------------------------------------------------------------------------------------
$ arm-none-eabi-gcc -O3 -S test.c
$ cat test.s
.cpu arm7tdmi
.fpu softvfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 1
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.file "test.c"
.text
.align 2
.global uint32_read_unaligned
.type uint32_read_unaligned, %function
uint32_read_unaligned:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 0, uses_anonymous_args = 0
str lr, [sp, #-4]!
sub sp, sp, #12
mov r1, r0
mov r2, #4
add r0, sp, #4
bl memcpy
ldr r0, [sp, #4]
add sp, sp, #12
ldr lr, [sp], #4
bx lr
.size uint32_read_unaligned, .-uint32_read_unaligned
.ident "GCC: (GNU) 4.5.1"
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development