Linux Assembly --김도집 (2006.1.) [[TableOfContents]] = Assembly Code = {{{ .ifdef xxx .else .endif }}} {{{ .align 5 }}} {{{ .equ xxx,0x000000000 }}} {{{ .include "xxx.inc" }}} {{{ .text }}} {{{ .macro xxx,val mov r0, \val .endm }}} {{{ .glbl xxx }}} = Inline Assembly = 다음은 인라인 어셈블리의 한 예이다. {{{#!vim c __asm__ __volatile__ ("\n\ mrc p6, 0, r1, c1, c, 0 @ Read out ICMR\n\ and r1, r1, %0 \n\ mcr p6, 0, r1, c1, c0, 0 @ Write back" : :"r"(temp) :"r1"); }}} 위에서 보는 바와 같이 인라인 어셈블리의 형식은 다음과 같다. {{{ __asm__ __volatile__(어셈블리 문장 : 출력 : 입력 : 변경된 레지스터); }}} {{{__volatile__}}}의 경우엔 생략이 가능하나 컴파일러의 임의 변경을 막고자 한다면 넣어야 한다. 출력, 입력, 변경된 레지스터 등에는 어떤 값도 들어가지 않을 수도 있다. 반대로 하나 이상의 값이 필요하다면 컴마(,)로 구분하면 된다.