제발 도와주세요, 나는이 간단한 문제를 알아 내려고 5 시간 이상을 보냈습니다. 당신의 삶에 대해 어떻게 생각하는지 이해할 수 없습니다.shift를 사용하여 MIPS 어셈블리에서 곱셈을 수행하고 추가하려면 어떻게해야합니까?
나는 7 * 5와 같은 문제를 해결하고 MIPS 어셈블리에서 결과를 반환하기로되어 있지만 shift와 add를 사용하여 수행해야한다. 나는 우리가 주어진 힌트를 MIPS 코드로 변환하는 방법을 이해할 수 없다. 내가 아래 그림이 어떻게 작동하는지 그리고 그 뒤에있는 논리를 100 % 이해하고 있지만, MIPS 어셈블리 코드로 변환 할 수는 없지만, 5 시간 이상을 할애했다. 내가 MIPS의 작품을 추가하는 방법을 이동 작품, 내가 이해하는 방법을 이해
here is what we were given as a hint
은, 난 그냥 MIPS의 어셈블리 언어로, 그 이미지에 표시됩니다 무엇을 할 수 방법을 모르겠어요. (나는 영어를이 코드로 변환하는 방법을 모른다 .MIPS는 너무 베어 본다.)
나는 분명해야한다! : 두 숫자는 가변이다. 나는 매번 두 개의 다른 수를 취하고 결과를 얻는 코드를 쓰는 방법을 모른다. shift와 add를 사용한다. 7 * 5, 6 * 9, 17 * 3 등 사용자가 두 숫자에 대해 입력 한 값이 음수가 아닌 한 코드는 결과를 가져와야합니다.
강사에게 질문해야하는 질문입니다. 'sll'과'addu'는 MIPS에서 사용하기 쉽습니다. 어셈블리 언어의 기본 개념을 설명 할 사람을 물어 보는 것 같습니다. 이 질문에 대한 stackoverflow 형식에 맞는 좋은 대답을 가질 가능성이 있다고 생각하지 않습니다. –
질문을 다시 읽어야한다고 생각합니다. 나는 내가 분명히 말했듯이 두 가지 명령을 사용하여 곱셈을하는 더 큰 문제를 번역하는 방법을 잘 알고있다. 왼쪽으로 시프트하면 기본적으로 시프트 할 때마다 숫자가 2 씩 증가합니다. 문자 그대로 추가하면 숫자가 추가되고 새 레지스터에 저장됩니다. 이제는 숫자를 함께 곱하는 방법을 사용합니다. 이미지에서 알 수 있듯이 MIPS 어셈블리 코드에서이를 표현하는 방법을 모르겠습니다. –
7 * 4 ='li $ t0,7' (또는 의사 명령이없는 이유가 있다면'addi $ t0, $ zero, 7')'sll $ t0, $ t0, 2' ..yaaay,'t0 = 28'. (바이너리't0 = 00000111','sll' 다음에 :'t0 = 00011100' = 오래된 값을 2 비트 씩 왼쪽으로 이동). – Ped7g