TI MSP430 의 asm 코드에서 다음과 같은 구문좀 알려주세요 부탁드립니다

o12bank1의 이미지


몇일전에도 비슷하게 질문을 햇는데 아래 내용 꼭 좀 부탁드립니다..

#define wfe(addr,bits) \
asm(".word %r0" : : "X" ((4<<9) | (0<<8) | bits));\
asm(".word %r0" : : "X" (addr & 0xFFFF));

찾아도 잘 안나오고 해서 이렇게 문의를 드립니다

kukyakya의 이미지

며칠전에 올리셨던 똑같은 질문에 gcc의 인라인 어셈블리 관련 내용을 참고하라는 댓글이 달려있던걸로 기억하는데 못 보셨나요?

goforit의 이미지


asm(".word %r0" : : "X" ((4<<9) | (0<<8) | bits));

.word: 4 byte 공간에 %r0 값을 저장한다는 것입니다.

(4<<9) | (0<<8) | bits): input으로 받는 C 언어 값입니다.

: empty: output 없습니다. 메모리에 저장만합니다.

%r0: 두개의 의미로 나누어야합니다.
#1 r0: Compiler에게 r0 값을 연산의 저장소로 사용하도록 요청합니다.
#2 %자체는 Input의 값을 가리킵니다.

"X" : 이 어셈블리 명령어 실행시에 operand가 제약이 필요하지 않다는 것입니다.

o12bank1의 이미지

안녕하세요 우선 답변 정말 감사드립니다
근데 먼가 알듯 말듯 좀 어렵네요...

죄송하지만 제가 작성한 예를 들어 좀 더 쉽게 설명 부탁드려도 될가요?

다시한번 답변감사드립니다