| -- c |
| extern int strcmp_ext(const char *a, const char *b); |
| |
| int entry(int *mem) |
| { |
| char a[] = "abcx"; |
| char b[] = "abcy"; |
| |
| if (strcmp_ext(a, a) != 0) { |
| return 1; |
| } |
| |
| if (strcmp_ext(a, b) == 0) { |
| return 1; |
| } |
| |
| return 0; |
| } |
| -- asm |
| mov r1, 0x78636261 |
| stxw [r10-8], r1 |
| mov r6, 0x0 |
| stxb [r10-4], r6 |
| stxb [r10-12], r6 |
| mov r1, 0x79636261 |
| stxw [r10-16], r1 |
| mov r1, r10 |
| add r1, 0xfffffff8 |
| mov r2, r1 |
| call 0x4 |
| mov r1, r0 |
| mov r0, 0x1 |
| lsh r1, 0x20 |
| rsh r1, 0x20 |
| jne r1, 0x0, +11 |
| mov r1, r10 |
| add r1, 0xfffffff8 |
| mov r2, r10 |
| add r2, 0xfffffff0 |
| call 0x4 |
| mov r1, r0 |
| lsh r1, 0x20 |
| rsh r1, 0x20 |
| mov r0, 0x1 |
| jeq r1, r6, +1 |
| mov r0, 0x0 |
| exit |
| -- result |
| 0x0 |
| -- no register offset |
| call instruction |