16

このコードが1に設定されていないのはなぜtempですか?実際にそれを行うにはどうすればよいですか?

int temp;
__asm__(
    ".intel_syntax;"
    "mov %0, eax;"
    "mov eax, %1;"
    ".att_syntax;"
    : : "r"(1), "r"(temp) : "eax");
printf("%d\n", temp);
4

3 に答える 3

17

tempインプットではなく、アウトプットになりたいと思います。試す:

  __asm__(
      ".intel_syntax;"
      "mov eax, %1;"
      "mov %0, eax;"
      ".att_syntax;"
      : "=r"(temp)
      : "r"(1) 
      : "eax");
于 2011-03-22T21:00:09.583 に答える
8

このコードは、あなたが達成しようとしていることを行います。これがお役に立てば幸いです:

#include <stdio.h>

int main(void)
{
    /* Compile with C99 */
    int temp=0;

    asm
    (   ".intel_syntax;"
        "mov %0, 1;"
        ".att_syntax;"
        : "=r"(temp)
        :                   /* no input*/
    );
    printf("temp=%d\n", temp);
}
于 2011-03-22T21:30:41.717 に答える