首页 > 解决方案 > 如何使用浮点编写内联汇编

问题描述

我正在编写一个简单的程序,在其中我将一个浮点数的值分配给另一个浮点数。

float a = 1;
float b = 2;
b=a;

我想将“b = a”行转换为内联汇编。我写了以下内容:

asm volatile("movss %1, %%xmm0 \n"
             "movss %%xmm0, %0"
             :"=f"(b)
             :"f"(a)
             :"xmm0");

它给出了以下错误:

a.c:8:17: error: output constraint 0 must specify a single register
                 asm volatile("movss %1, %%xmm0 \n"

谁能帮我解决这个错误的含义以及如何调试它?

PS - 如果有人需要,请提供 CPU 架构信息。

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8

谢谢

标签: gccassemblyfloating-pointx86inline-assembly

解决方案


推荐阅读