어셈 구문해석에 대한 질문 ...
글쓴이: linux777 / 작성시간: 금, 2004/05/21 - 12:37오후
간단한 어셈 소스인데 ... 질문 입니다 ....
static __inline void
outb (unsigned char value, unsigned short int port)
{
__asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port));
}
("outb %b0,%w1": :"a" (value), "Nd"
부분을 이해하기 쉽게 설명부탁드려요 ..
Forums:


[code:1]static __inline void outb &#
static __inline void outb (unsigned char value, unsigned short int port) { __asm__ __volatile__ ("outb %b0,%w1": :"a" (value), "Nd" (port)); }AT&T inline asm syntax 에 대해 저도 잘 모릅니다.
대충 보니.....
outb 는 out을 byte 단위로 하겠다는 소리고,
b0은 첫번째 인자가 byte (unsigned char 니까),
w1은 두번째 인자가 word (unsigned short 이니까)
라는 소리 같습니다.
("outb %b0,%w1": /* 비어있다 */ :"a" (value), "Nd" (port));는 %w1"뒤에가 비어있으니 출력값이 없고,
입력값으로는 value와 port 를 받아들인다는 소리 같네요.
결국 outb value, port 형태가 되니....
원하는 포트에 원하는 값을 집어넣는 간단한 inline asm 같습니다.
dos 환경의 고전적인 outb() 를 구현하기 위한 인라인 함수가 아닌가 싶네요.
----
LUX ET VERITAS | Just for Fun!