가스 (GNU 어셈블러)와 함께 MIPS 레지스터 이름을 사용할 수 있습니까?
문제
레지스터 이름을 사용하면 다음을 얻습니다.
Error: illegal operands `add $t0,$zero,$zero'
레지스터 번호를 사용하는 경우 ($8
대신에 $t0
그리고 $0
대신에 $zero
) 효과가있다. (Binutils 2.17을 사용하고 있습니다).
해결책
GNU 어셈블러는 상징적 등록 이름을 직접 지원하지 않습니다. GCC를 사용하여 어셈블러를 구동하는 경우 일반적인 접근 방식은 어셈블러 소스 파일에 ".S"확장자를 사용하는 것입니다 (GCC에게 어셈블러 앞에 C 프리 브레이저를 통해 소스를 전달하도록 지시하고 정의가 포함 된 헤더 파일을 포함합니다. 처럼:
#define zero $0
#define v0 $2
#define v1 $3
그런 다음 어셈블러 소스는 같은 진술을 가질 수 있습니다
add v0, zero, zero
제휴하지 않습니다 StackOverflow