Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
Inline Assembly

부록 C. Inline Assembly

인라인 어셈블리는 어셈블리로 짜는 소스 코드가 아닌 다른 언어 내에 들어가는 어셈블리 형태의 코드를 말한다. 예를 들어 많이 사용하는 C 내에서 C로는 할 수 없는 일이나 속도가 아주 빠른 작업을 원할 때 직접 어셈블리 코드를 입력해 사용할 수 있다.

시스템 프로그래밍이나 성능을 높여야 하는 경우에 보통은 어셈블리를 사용한다. 즉 프로그램의 대부분을 C나 C++등으로 만들고 고급언어로는 할 수 없거나, 그 부분에 어셈블리를 써서 속도 향상이 가능할 때 그 부분만을 어셈블리로 만들어 C나 C++로 만든 나머지 부분과 같이 쓰게 된다.

C로 된 부분과 어셈블리로 된 부분을 같이 동작시키는 데는 크게 두 가지 방법이 있다. 하나는 어셈블리로 쓴 부분을 독립된 함수로 만들어 따로 어셈블 한 후에 오브젝트 화일을 링크시키는 방법이 있고 나머지 하나는 인라인 어셈블리를 쓰는 방법이 있다.

어셈블리 파일을 따로 만드는 경우엔 어셈블리 함수가 C의 함수 호출 방식을 따르도록 해주면 C와 사용하기 쉬우므로 크기가 큰 경우라면 이 방법을 쓰는 것이 좋다.

그러나 일부분에서만 어셈블리가 필요하거나 특히 고급 언어가 사용하지 못하는 프로세서의 특정한 기능을 쓰기위해 어셈블리를 쓸 때는 많아도 이삼십개 정도의 명령 만을 어셈블리로 만들면 되는 경우가 대부분이고 이를 위해서 따로 함수를 만들어 링크하는 것은 번거로운데다가 자주 호출되는 경우라면 성능에도 영향을 미친다. 이런 경우에 인라인 어셈블리를 쓰게된다.