【发布时间】:2020-11-16 23:14:51
【问题描述】:
如何使用printf函数打印ARM-Assembly中多个.long的值?
.global main
.extern printf
.func main
main:
.long 15
.long 17
bx lr
【问题讨论】:
如何使用printf函数打印ARM-Assembly中多个.long的值?
.global main
.extern printf
.func main
main:
.long 15
.long 17
bx lr
【问题讨论】:
为什么不简单地尝试一下?
void fun ( long a, long b)
{
printf("%ld %ld\n",a,b);
}
编译器输出(已编辑)
.LC0:
.ascii "%ld %ld\012\000"
fun:
mov r3, r0
push {r4, lr}
mov r2, r1
ldr r0, .L4
mov r1, r3
bl printf
pop {r4, lr}
bx lr
.L4:
.word .LC0
编译器输出(反汇编)
00000000 <fun>:
0: e1a03000 mov r3, r0
4: e92d4010 push {r4, lr}
8: e1a02001 mov r2, r1
c: e59f000c ldr r0, [pc, #12] ; 20 <fun+0x20>
10: e1a01003 mov r1, r3
14: ebfffffe bl 0 <printf>
18: e8bd4010 pop {r4, lr}
1c: e12fff1e bx lr
20: 00000000 andeq r0, r0, r0
Disassembly of section .rodata.str1.4:
00000000 <.rodata.str1.4>:
0: 20646c25 rsbcs r6, r4, r5, lsr #24
4: 0a646c25 beq 191b0a0 <fun+0x191b0a0>
...
【讨论】: