我需要在此代码中更改两个数组元素。就像我在C中做str[0] = a
和str[1] = b
一样。它是C代码中的内联汇编程序,linux。
char str[] = "9999\n";
int a = 1;
inb b = 1;
asm volatile (
//replace 1st element of str with a here
//replace 2st element of str with b here
: "=r" (str)
: "r" (a), "r" (b), "r" (str)
: );
答案 0 :(得分:0)
我知道你想做str[0] = a; std[1] = b;
你可以做到
__asm__ ("movb %0, (%1)\n\tmovb %2, 1(%1)" : : "r" ((char)a), "r" (str), "r" ((char)b) : "m"(*str));
这当然是AT& T风格的组装。
答案 1 :(得分:-1)
所以我试过
char str[] = "9999\n";
char a = '1';
asm volatile (
"movb %0,%1;"
:
: "r" (a), "m" (str[0])
: );
它很好但我需要在这个程序中使用 a 作为整数。那么我可以在程序集中转换类型(从int到char)吗?