3
내 ASM 지식이 너무 제한되어, 나는 다음과 같은 코드를 알고 있어야합니다% 0을 (를) 포함하는 asm 코드, 그게 무슨 뜻입니까?
movl %%esp %0
%0
는 레지스터, 메모리 주소 또는 다른 뭔가를 나타낼 지? %0
의 의미는 무엇입니까?
내 ASM 지식이 너무 제한되어, 나는 다음과 같은 코드를 알고 있어야합니다% 0을 (를) 포함하는 asm 코드, 그게 무슨 뜻입니까?
movl %%esp %0
%0
는 레지스터, 메모리 주소 또는 다른 뭔가를 나타낼 지? %0
의 의미는 무엇입니까?
일부는 input/output operand을 나타냅니다. 어셈블리 코드에서 C 변수를 사용할 수 있습니다. This page에는 좋은 예가 있습니다.
%0
은 코드에서 정의 된 첫 번째 입력/출력 피연산자입니다. 실제로 컴파일러에 의해 생성 된 어셈블리 코드에 따라 스택 변수, 힙 변수 또는 레지스터가 될 수 있습니다.
:
int a=10, b;
asm ("movl %1, %%eax;
movl %%eax, %0;"
:"=r"(b) /* output */
:"r"(a) /* input */
:"%eax" /* clobbered register */
);
%0
이 경우 b
이고 %1
는 a
이다.
"이 경우 % 0은 (는) b이고 % 0은 (는)", 2 % 0 ?? –
작은 실수가있을 것 같습니다. 읽어야합니다 : "'% 1'은'a'"입니다. – Eugene
[Here] (http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html)은 예제가있는 "How To"입니다. – Eugene