How can I multiply and divide by odd constants in arm Assembly?
I don’t know how to multiply or divide by an odd constant. In the image (Link to image ), I know how to solve the first two problem (with the left and the right shift) but not the last two.
How can I do the exercise number 3 and number 4?
I resolved the first like this:
ADD r1, r2, lsl #3
So I’d Like something like that for the last two.
assembly arm
add a comment |
I don’t know how to multiply or divide by an odd constant. In the image (Link to image ), I know how to solve the first two problem (with the left and the right shift) but not the last two.
How can I do the exercise number 3 and number 4?
I resolved the first like this:
ADD r1, r2, lsl #3
So I’d Like something like that for the last two.
assembly arm
4
You know thatx*5=x*4+x
right? Also(3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.
– Jester
Nov 23 '18 at 12:53
2
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because(3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by4
?
– Peter Cordes
Nov 23 '18 at 18:12
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39
add a comment |
I don’t know how to multiply or divide by an odd constant. In the image (Link to image ), I know how to solve the first two problem (with the left and the right shift) but not the last two.
How can I do the exercise number 3 and number 4?
I resolved the first like this:
ADD r1, r2, lsl #3
So I’d Like something like that for the last two.
assembly arm
I don’t know how to multiply or divide by an odd constant. In the image (Link to image ), I know how to solve the first two problem (with the left and the right shift) but not the last two.
How can I do the exercise number 3 and number 4?
I resolved the first like this:
ADD r1, r2, lsl #3
So I’d Like something like that for the last two.
assembly arm
assembly arm
edited Nov 23 '18 at 16:02
Stoogy
651722
651722
asked Nov 23 '18 at 12:47
Noemi PecorariNoemi Pecorari
82
82
4
You know thatx*5=x*4+x
right? Also(3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.
– Jester
Nov 23 '18 at 12:53
2
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because(3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by4
?
– Peter Cordes
Nov 23 '18 at 18:12
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39
add a comment |
4
You know thatx*5=x*4+x
right? Also(3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.
– Jester
Nov 23 '18 at 12:53
2
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because(3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by4
?
– Peter Cordes
Nov 23 '18 at 18:12
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39
4
4
You know that
x*5=x*4+x
right? Also (3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.– Jester
Nov 23 '18 at 12:53
You know that
x*5=x*4+x
right? Also (3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.– Jester
Nov 23 '18 at 12:53
2
2
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is
(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because (3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by 4
?– Peter Cordes
Nov 23 '18 at 18:12
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is
(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because (3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by 4
?– Peter Cordes
Nov 23 '18 at 18:12
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39
add a comment |
1 Answer
1
active
oldest
votes
1) MUL r1, r2, lsl #2 → ADD r1, r1, r2
2) MUL r1, r2, lsl #1 → ADD r1, r1, r2 → MUL r1, r1, lsr #2
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%2f53447007%2fhow-can-i-multiply-and-divide-by-odd-constants-in-arm-assembly%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
1) MUL r1, r2, lsl #2 → ADD r1, r1, r2
2) MUL r1, r2, lsl #1 → ADD r1, r1, r2 → MUL r1, r1, lsr #2
add a comment |
1) MUL r1, r2, lsl #2 → ADD r1, r1, r2
2) MUL r1, r2, lsl #1 → ADD r1, r1, r2 → MUL r1, r1, lsr #2
add a comment |
1) MUL r1, r2, lsl #2 → ADD r1, r1, r2
2) MUL r1, r2, lsl #1 → ADD r1, r1, r2 → MUL r1, r1, lsr #2
1) MUL r1, r2, lsl #2 → ADD r1, r1, r2
2) MUL r1, r2, lsl #1 → ADD r1, r1, r2 → MUL r1, r1, lsr #2
answered Nov 25 '18 at 19:47
Andrea CulotAndrea Culot
4918
4918
add a comment |
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%2f53447007%2fhow-can-i-multiply-and-divide-by-odd-constants-in-arm-assembly%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
4
You know that
x*5=x*4+x
right? Also(3/4)*x=(3*x)/4=(2*x+x)/4
. Any problems doing these? PS: these will take more than a single instruction.– Jester
Nov 23 '18 at 12:53
2
Welcome to StackOverflow! Please be aware that this isn't a homework service - asking a good SO question is about documenting your attempts to solve a problem and then asking for help with something specific that you don't understand, rather than asking for someone to write code for you.
– cooperised
Nov 23 '18 at 13:18
You're only dividing by even constants, powers of 2 in fact, so it's just shifts. Is
(3/4) * x
really supposed to be evaluated with integer math? If so, the answer is zero because(3/4)
truncates to 0. Otherwise, are you supposed to be keeping some fraction bits in the other cases where you divide by4
?– Peter Cordes
Nov 23 '18 at 18:12
I don’t know I only have to put the value from 3/4 * r2 in r1
– Noemi Pecorari
Nov 25 '18 at 19:39