首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在ARMv8程序集中打印总和

无法在ARMv8程序集中打印总和
EN

Stack Overflow用户
提问于 2016-10-04 14:11:57
回答 1查看 1.1K关注 0票数 0

我一直在尝试用ARMv8打印我的总和,但是我似乎不能让它工作。我可以编译和运行,但没有显示任何输出。

这是我的代码:

代码语言:javascript
复制
       .balign 4
       .global main
main:
        stp     x29, x30, [sp, -16]! 
        mov     x29, sp              

        mov     x19, 1              
        mov     x20, 2
        add     x21, x20, x19

        mov     w0, 0                
        ldp     x29, x30, [sp], 16   
        ret                     
EN

回答 1

Stack Overflow用户

发布于 2016-10-05 01:19:14

正如@Michael所指出的,您没有使用任何指令将您的金额“打印”到屏幕上。您可以使用syscalls或printf。下面的示例ARMv8代码使用了printf和一些简单的宏,这些都不是必需的。

我建议你学习ARMv7,因为有很多教程,然后复习ARMv8指令集概述和AArch64的ARM过程调用标准。

代码语言:javascript
复制
1 /*
  2         David @InfinitelyManic
  3         http://stackoverflow.com/questions/39845288/cant-print-sum-in-armv8-assembly
  4         $ uname -a
  5         Linux alarm 3.10.65-4-pine64-longsleep #16 SMP PREEMPT Sun Apr 3 10:56:40 CEST 2016 aarch64 GNU/Linux
  6         $ cat /etc/os-release
  7         NAME="Arch Linux ARM"
  8         gcc -g print_sum.s -o print_sum
  9 */
 10 .bss
 11 .data
 12         fmt:    .asciz  "%d + %d = %d\n"
 13 .text
 14         .global main
 15
 16         // macros
 17         // push2
 18         .macro push2, xreg1, xreg2
 19         .push2\@:
 20                 stp     \xreg1, \xreg2, [sp, #-16]!
 21         .endm
 22
 23         // pop2
 24         .macro  pop2, xreg1, xreg2
 25         .pop2\@:
 26                 ldp     \xreg1, \xreg2, [sp], #16
 27         .endm
 28
 29         // exit
 30         .macro _exit
 31         .exit\@:
 32                 mov x8, #93             // exit see /usr/include/asm-generic/unistd.h
 33                 svc 0
 34         .endm
 35
 36 main:
 37         mov x1, 1
 38         mov x2, 2
 39         add x3, x1, x2
 40         bl write
 41
 42 _exit
 43
 44 write:
 45         push2 x29, x30
 46         ldr x0,=fmt
 47         bl printf
 48         pop2 x29, x30
 49         ret

输出:

代码语言:javascript
复制
 $./print_sum
1 + 2 = 3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39845288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档