'인라인어셈블리'에 해당되는 글 1건

  1. 2008.08.26 인라인 어셈블리 기초.

인라인 어셈블리를 사용할 땐 다음과 같은 것을 명시해 줘야한다. 물론 빼고 사용할 수도 있다.

  • 어셈블리 코드

  • output 변수

  • input 변수

  • 값이 바뀌는 레지스터

그리고 사용되는 문법의 형태는 다음과 같다.

__asm__ __volatile__ (asms : output : input : clobber);

__asm__

다음에 나오는 것이 인라인 어셈블리 임을 나타낸다. ANSI엔 __asm__ 으로만 정으되어 있으므로 asm 과 같은 키워드는 사용하지 않는 것이 바람직하다.

__volatile__

이 키워드를 사용하면 컴파일러는 프로그래머가 입력한 그래도 남겨두게 된다. 즉 최적화 나 위치를 옮기는 등의 일을 하지 않는다. 예를 들어 output 변수중 하나가 인라인 어셈블리엔 명시되어 있지만 다른 곳에서 사용되지 않는다고 판단되면 컴파일러는 이 변수를 알아서 잘 없애주기도 한다. 이런 경우 이런 것을 고려해 프로그램을 짰다면 상관 없겠지만 만에 하나 컴파일러가 자동으로 해준 일 때문에 버그가 발생할 수도 있다. 그러므로 __volatile__ 키워드를 사용해 주는 것이 좋다.

 

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요