Why the RISC instruction sets usually do not contain register to register copy instruction?
I had this question on my exam and i am confused because as far as i know that
move $t0, $a0 # COPY $A0 TO $T0
in MIPS instruction provides that and MIPS is a RISC processor. Am I missing something?
assembly cpu-architecture instruction-set risc
add a comment |
I had this question on my exam and i am confused because as far as i know that
move $t0, $a0 # COPY $A0 TO $T0
in MIPS instruction provides that and MIPS is a RISC processor. Am I missing something?
assembly cpu-architecture instruction-set risc
If they have zero register like MIPS (and most RISC-like do), thenadd
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.
– Ped7g
Nov 13 '18 at 18:51
1
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. Nomove
= more bits for others.
– Ped7g
Nov 14 '18 at 0:16
add a comment |
I had this question on my exam and i am confused because as far as i know that
move $t0, $a0 # COPY $A0 TO $T0
in MIPS instruction provides that and MIPS is a RISC processor. Am I missing something?
assembly cpu-architecture instruction-set risc
I had this question on my exam and i am confused because as far as i know that
move $t0, $a0 # COPY $A0 TO $T0
in MIPS instruction provides that and MIPS is a RISC processor. Am I missing something?
assembly cpu-architecture instruction-set risc
assembly cpu-architecture instruction-set risc
edited Nov 13 '18 at 17:32
Peter Cordes
127k18190326
127k18190326
asked Nov 13 '18 at 17:14
roffensiveroffensive
15810
15810
If they have zero register like MIPS (and most RISC-like do), thenadd
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.
– Ped7g
Nov 13 '18 at 18:51
1
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. Nomove
= more bits for others.
– Ped7g
Nov 14 '18 at 0:16
add a comment |
If they have zero register like MIPS (and most RISC-like do), thenadd
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.
– Ped7g
Nov 13 '18 at 18:51
1
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. Nomove
= more bits for others.
– Ped7g
Nov 14 '18 at 0:16
If they have zero register like MIPS (and most RISC-like do), then
add
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.– Ped7g
Nov 13 '18 at 18:51
If they have zero register like MIPS (and most RISC-like do), then
add
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.– Ped7g
Nov 13 '18 at 18:51
1
1
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. No
move
= more bits for others.– Ped7g
Nov 14 '18 at 0:16
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. No
move
= more bits for others.– Ped7g
Nov 14 '18 at 0:16
add a comment |
1 Answer
1
active
oldest
votes
Move is a pseudoinstruction, and when assembled will really be a different instruction.
For instance
move $t0, $zero gets implemented as addu $t0, $zero, $zero
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53286335%2fwhy-the-risc-instruction-sets-usually-do-not-contain-register-to-register-copy-i%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Move is a pseudoinstruction, and when assembled will really be a different instruction.
For instance
move $t0, $zero gets implemented as addu $t0, $zero, $zero
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
add a comment |
Move is a pseudoinstruction, and when assembled will really be a different instruction.
For instance
move $t0, $zero gets implemented as addu $t0, $zero, $zero
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
add a comment |
Move is a pseudoinstruction, and when assembled will really be a different instruction.
For instance
move $t0, $zero gets implemented as addu $t0, $zero, $zero
Move is a pseudoinstruction, and when assembled will really be a different instruction.
For instance
move $t0, $zero gets implemented as addu $t0, $zero, $zero
answered Nov 13 '18 at 17:25
lostbardlostbard
3,1231412
3,1231412
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
add a comment |
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
Ok, and do u know the answer for the initial question?
– roffensive
Nov 13 '18 at 17:29
2
2
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
that is the answer - there is no move - it is really add
– lostbard
Nov 13 '18 at 17:29
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53286335%2fwhy-the-risc-instruction-sets-usually-do-not-contain-register-to-register-copy-i%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
If they have zero register like MIPS (and most RISC-like do), then
add
/or
are "obvious" substitutions. Without zero register it would made me scratch my head for some time.– Ped7g
Nov 13 '18 at 18:51
1
Also it's maybe not obvious why, if you missed that part about how machine code is encoded. On RISC machines usually every instruction has size of exactly one machine "word" (32 bits quite often). So the fewer instructions you need to encode, the more bits are left for registers specification and/or immediate values. Notice that 32 bit instruction can't contain both instruction opcode and 32 bit immediate, so that's why loading full 32b constant on 32b RISC CPU into register usually takes either 2-3 normal instruction, or the constant is fetched from memory. No
move
= more bits for others.– Ped7g
Nov 14 '18 at 0:16