如何使用printf打印单精度浮点数

我正在尝试在x86_64程序集中打印浮点数,但它只会将值打印为零。


已经有一些问题了。通过确保您在%al中设置要使用的向量寄存器数,似乎可以解决该问题。另一个表明您需要16个字节的堆栈对齐。但是,我同时做这些事情,仍然没有得到正确的输出。


这是我的程序:


# prints a floating point value

.section .rodata

.fmt: .string "num: %f\n"

.num: .float 123.4


.section .text

.global main

.type   main, @function

main:

  subq $8, %rsp     # 16-byte alignment


  # print my number

  movss .num, %xmm0 # load float value

  movq $.fmt, %rdi  # load format string

  movb $1, %al      # use 1 vector register

  call printf


  # exit

  addq $8, %rsp     # undo alignment

  movq $0, %rax     # return 0

  ret


明月笑刀无情
浏览 958回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP