Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

please help get this to work in linux, when I run it I get a message rft.c: Asse

ID: 3677827 • Letter: P

Question

 please help get this to work in linux, when I run it I get a message   rft.c: Assembler messages: rft.c:10: Error: operand type mismatch for `fld' rft.c:10: Error: operand type mismatch for `fld' rft.c:10: Warning: translating to `faddp' rft.c:10: Error: operand type mismatch for `fstp' rft.c:15: Error: operand type mismatch for `fld' rft.c:15: Error: operand type mismatch for `fld' rft.c:15: Warning: translating to `fsubp' rft.c:15: Error: operand type mismatch for `fstp' rft.c:20: Error: operand type mismatch for `fld' rft.c:20: Error: operand type mismatch for `fld' rft.c:20: Warning: translating to `fmulp' rft.c:20: Error: operand type mismatch for `fstp' rft.c:25: Error: operand type mismatch for `fld' rft.c:25: Error: operand type mismatch for `fld' rft.c:25: Warning: translating to `fdivp' rft.c:25: Error: operand type mismatch for `fstp'   #include <stdio.h>  int main() {          float arg1, arg2, add, sub, mul, div ;          printf( "Enter two integer numbers : " );         scanf( "%f%f", &arg1, &arg2 );          __asm__ ( "fld %1;"                           "fld %2;"                           "fadd;"                           "fstp %0;" : "=g" (add) : "g" (arg1), "g" (arg2) ) ;          __asm__ ( "fld %2;"                           "fld %1;"                           "fsub;"                           "fstp %0;" : "=g" (sub) : "g" (arg1), "g" (arg2) ) ;          __asm__ ( "fld %1;"                           "fld %2;"                           "fmul;"                           "fstp %0;" : "=g" (mul) : "g" (arg1), "g" (arg2) ) ;          __asm__ ( "fld %2;"                           "fld %1;"                           "fdiv;"                           "fstp %0;" : "=g" (div) : "g" (arg1), "g" (arg2) ) ;          printf( "%f + %f = %f ", arg1, arg2, add );         printf( "%f - %f = %f ", arg1, arg2, sub );         printf( "%f * %f = %f ", arg1, arg2, mul );         printf( "%f / %f = %f ", arg1, arg2, div );          return 0 ; } 

Explanation / Answer

#include <stdio.h>

int main() {

float arg1, arg2, add, sub, mul, div ;

printf( "Enter two integer numbers : " );
scanf( "%f%f", &arg1, &arg2 );

__asm__ ( "fld %1;"
"fld %2;"
"fadd;"
"fstp %0;" : "=m" (add) : "m" (arg1), "m" (arg2) ) ;

__asm__ ( "fld %2;"
"fld %1;"
"fsub;"
"fstp %0;" : "=m" (sub) : "m" (arg1), "m" (arg2) ) ;

__asm__ ( "fld %1;"
"fld %2;"
"fmul;"
"fstp %0;" : "=m" (mul) : "m" (arg1), "m" (arg2) ) ;

__asm__ ( "fld %2;"
"fld %1;"
"fdiv;"
"fstp %0;" : "=m" (div) : "m" (arg1), "m" (arg2) ) ;

printf( "%f + %f = %f ", arg1, arg2, add );
printf( "%f - %f = %f ", arg1, arg2, sub );
printf( "%f * %f = %f ", arg1, arg2, mul );
printf( "%f / %f = %f ", arg1, arg2, div );

return 0 ;
}