programing

MIPS 어셈블리 언어의 "move"와 "li"의 차이

yellowcard 2023. 10. 7. 09:47
반응형

MIPS 어셈블리 언어의 "move"와 "li"의 차이

C 코드를 MIPS 어셈블리 언어로 변환하는 연습을 하고 있었는데, 사용법을 이해하는 데 어려움을 겪고 있습니다.move그리고.li가변적인 임무 수행 중입니다.

예를 들어, MIPS에서 다음 C 라인을 구현하는 경우:

int x = 0;

제가 정확하게 이해했다면(그러나 이는 매우 의심스럽습니다), MIPS 어셈블러에서 다음 두 가지가 모두 작동하는 것처럼 보입니다.

move $s0, $zero
li $s0, $zero

내가 틀렸나요?이 두 줄의 차이점은 무엇입니까?

move명령어는 한 레지스터에서 다른 레지스터로 값을 복사합니다. 그li명령어는 해당 레지스터에 특정 숫자 값을 로드합니다.

특정한 0의 경우 상수 0 또는 영 레지스터를 사용하여 다음을 얻을 수 있습니다.

move $s0, $zero
li   $s0, 0

0 이외의 값을 생성하는 레지스터는 없기 때문에 사용해야 합니다.li다른 번호를 원한다면 다음과 같이 하십시오.

li $s0, 12345678

move명령어는 한 레지스터의 값을 다른 레지스터로 이동합니다.li레지스터에 즉시 값을 로드합니다.

언급URL : https://stackoverflow.com/questions/19827522/difference-between-move-and-li-in-mips-assembly-language

반응형