1 .text 2 .code 16 3.foo: 4 lsl r2, r1, #3 5 lsr r3, r4, #31 6wibble/data: 7 asr r7, r0, #5 8 9 lsl r1, r2, #0 10 lsr r3, r4, #0 11 asr r4, r5, #0 12 13 lsr r6, r7, #32 14 asr r0, r1, #32 15 16 add r1, r2, r3 17 add r2, r4, #2 18 sub r3, r5, r7 19 sub r2, r4, #7 20 21 mov r4, #255 22 cmp r3, #250 23 add r6, #123 24 sub r5, #128 25 26 and r3, r5 27 eor r4, r6 28 lsl r1, r0 29 lsr r2, r3 30 asr r4, r6 31 adc r5, r7 32 sbc r0, r4 33 ror r1, r4 34 tst r2, r5 35 neg r1, r1 36 cmp r2, r3 37 cmn r1, r4 38 orr r0, r3 39 mul r4, r5 40 bic r5, r7 41 mvn r5, r5 42 43 add r1, r13 44 add r12, r2 45 add r9, r9 46 cmp r1, r14 47 cmp r8, r0 48 cmp r12, r14 49 mov r0, r9 50 mov r9, r4 51 mov r8, r8 52 bx r7 53 bx r8 54 .align 0 55 bx pc 56 57 ldr r3, [pc, #128] 58 ldr r4, bar 59 60 str r0, [r1, r2] 61 strb r1, [r2, r4] 62 ldr r5, [r6, r7] 63 ldrb r2, [r4, r5] 64 65 .align 0 66bar: 67 strh r1, [r2, r3] 68 ldrh r3, [r4, r0] 69 ldsb r1, [r6, r7] 70 ldsh r2, [r0, r5] 71 72 str r3, [r3, #124] 73 ldr r1, [r4, #124] 74 ldr r5, [r5] 75 strb r1, [r5, #31] 76 strb r1, [r4, #5] 77 strb r2, [r6] 78 79 strh r4, [r5, #62] 80 ldrh r5, [r0, #4] 81 ldrh r3, [r2] 82 83 str r3, [r13, #1020] 84 ldr r1, [r13, #44] 85 ldr r2, [r13] 86 87 add r7, r15, #1020 88 add r4, r13, #512 89 90 add r13, #268 91 add r13, #-104 92 sub r13, #268 93 sub r13, #-108 94 95 push {r0, r1, r2, r4} 96 push {r0, r3-r7, lr} 97 pop {r3, r4, r7} 98 pop {r0-r7, r15} 99 100 stmia r3!, {r0, r1, r4-r7} 101 ldmia r0!, {r1-r7} 102 103 beq bar 104 bne bar 105 bcs bar 106 bcc bar 107 bmi bar 108 bpl bar 109 bvs bar 110 bvc bar 111 bhi bar 112 bls bar 113 bge bar 114 bgt bar 115 blt bar 116 bgt bar 117 ble bar 118 bhi bar 119 blo bar 120 bul bar 121 bal bar 122 123close: 124 lsl r4, r5, #near - close 125near: 126 add r2, r3, #near - close 127 128 add sp, sp, #127 << 2 129 sub sp, sp, #127 << 2 130 add r0, sp, #255 << 2 131 add r0, pc, #255 << 2 132 133 add sp, sp, #bar - .foo 134 sub sp, sp, #bar - .foo 135 add r0, sp, #bar - .foo 136 add r0, pc, #bar - .foo 137 138 add r1, #bar - .foo 139 mov r6, #bar - .foo 140 cmp r7, #bar - .foo 141 142 nop 143 nop 144 145 .arm 146.localbar: 147 b .localbar 148 b .back 149 bl .localbar 150 bl .back 151 152 bx r0 153 swi 0x123456 154 155 .thumb 156 @ The following will be disassembled incorrectly if we do not 157 @ have a Thumb symbol defined before the first Thumb instruction: 158morethumb: 159 adr r0, forwardonly 160 161 b .foo 162 b .back 163 bl .foo 164 bl .back 165 166 bx r0 167 168 swi 0xff 169 .align 0 170forwardonly: 171 beq .back 172 bne .back 173 bcs .back 174 bcc .back 175 bmi .back 176 bpl .back 177 bvs .back 178 bvc .back 179 bhi .back 180 bls .back 181 bge .back 182 bgt .back 183 blt .back 184 bgt .back 185 ble .back 186 bhi .back 187 blo .back 188 bul .back 189 190.back: 191 bl .local 192 .space (1 << 11) @ leave space to force long offsets 193.local: 194 bl .back 195 196 ldr r0, .target 197 ldr r0, .target 198 ldr r0, [pc, #4] 199 ldr r0, [pc, #4] 200.target: 201baz: 202 mov r0, r1 203 nop 204