1 .section .bss 2 .align 4 3.L4_.bss: 4 .align 4 5Unixware_Asm_IntP: / Offset 0 6 .type Unixware_Asm_IntP,@object 7 .size Unixware_Asm_IntP,4 8 .set .,.+4 9Unixware_Asm_VoidP: / Offset 4 10 .type Unixware_Asm_VoidP,@object 11 .size Unixware_Asm_VoidP,4 12 .set .,.+4 13 .section .data 14 .align 4 15.L2_.data: 16 .align 4 17.L01: .string "canlock corrupted 0x%lux\n\000" 18 .set .,.+0x2 19 .section .text 20 .align 4 21.L1_.text: 22 23 .align 4 24 .align 4 25 .globl canlock 26canlock: 27 pushl %ebp 28 movl %esp,%ebp 29 pushl %esi 30 movl 8(%ebp),%eax 31 movl %eax,Unixware_Asm_IntP 32 movl $1, %ecx 33 xchg (%eax), %ecx 34 andl %ecx,%ecx 35 jne .L1 36 movl $1,%esi 37 jmp .L2 38 .align 4 39.L3: 40 subl %esi,%esi 41 jmp .L2 42 .align 4 43.L1: 44 cmpl $1,%ecx 45 je .L3 46 pushl %ecx 47 pushl $.L01 48 call print 49 addl $8,%esp 50.L2: 51 movl %esi,%eax 52 popl %esi 53 leave 54 ret 55 .type canlock,@function 56 .size canlock,.-canlock 57