<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DE" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US">Hi Roman,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US">in the mode you want to use the opcodes both immediate are defined as signed values.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">Imm32 is defined in the range </span><span lang="EN-GB" style="font-size:10.5pt;color:black">−2.147.483.648 to 2.147.483.647<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.5pt;color:black">In your case 0x80000000 will interpreted by the assembler as the unsigned value
</span><span lang="EN-GB" style="font-size:10.5pt;color:black">2.147.483.648</span><span lang="EN-GB" style="font-size:10.5pt;color:black"> which is bigger than 2.147.483.647<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.5pt;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.5pt;color:black">If you want to assemble that specific Imm in hex representation then you have to assemble:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:10.5pt;font-family:"Arial",sans-serif;color:black"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“add rax, 0x80000000” as “add rax, </span>
<span lang="EN-US">-2147483648</span><span lang="EN-US">”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:black">“add rax, 0xfffffffff” as “add rax, -1”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“imul rbx, rsi, 0x80000000” as “imul rbx, rsi, -2147483648”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“imul rbx, rsi, 0xffffffff” as “imul rbx, rsi, 0xffffffff”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Peter Garba</span><span lang="EN-GB"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US">From the Intel Manuel:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">ADD r/m64, imm32 MI Valid N.E. Add imm32 sign-extended to 64-bits to r/m64.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">IMUL—Signed Multiply:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">IMUL r32, r/m32, imm32 RMI Valid Valid doubleword register ← r/m32
</span><span lang="EN-GB" style="font-family:"Cambria Math",serif">∗</span><span lang="EN-GB"> immediate doubleword.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org]
<b>On Behalf Of </b>Rohleder, Roman (Contractor) via llvm-dev<br>
<b>Sent:</b> Donnerstag, 17. Dezember 2015 11:15<br>
<b>To:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> [llvm-dev] llvm-3.6 MCAsmParser x64 Error "invalid operand for instruction" when msb set<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I am experiencing problems, when trying to assemble these two x86-64 Opcodes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“add r64, imm32”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“imul r64, r64, imm32”<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">When having the most significant bit set for imm32, for example:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“add rax, 0x80000000”, “add rax, 0xffffffff”, …<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">“imul rbx, rsi, 0x80000000”, “imul rbx, rsi, 0xffffffff”, …<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The Error Message I receive is the following:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">„Instruction:1:1: error: invalid operand for instruction“<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I was using the MCAsmParser, with the RelaxAll Flag set to true, for the MCStreamer.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Can someone clarify, as to why this is happening, or what I am missing?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you in advance.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Kind regards<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Roman<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p> </o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-size:12.0pt;font-family:"Times New Roman",serif">
<hr size="3" width="100%" align="center">
</span></div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:black">________________________________________________<br>
<br>
SFNT Germany GmbH<br>
Registered office: Gabriele-Muenter-Str. 1<br>
D-82110 Germering, Germany<br>
Managing director (Geschäftsführer): Ansgar Dodt and Gary Clark<br>
Company Registration number: Amtsgericht Muenchen HRB 171025<br>
________________________________________________</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Times New Roman",serif"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Times New Roman",serif"><br>
______________________________________________________________<br>
<br>
The information contained in this electronic mail transmission <br>
may be privileged and confidential, and therefore, protected <br>
from disclosure. If you have received this communication in <br>
error, please notify us immediately by replying to this <br>
message and deleting it from your computer without copying <br>
or disclosing it.<br>
______________________________________________________________<o:p></o:p></span></p>
</div>
<br>
<hr>
<font face="Courier New" color="Black" size="2">________________________________________________<br>
<br>
SFNT Germany GmbH<br>
Registered office: Gabriele-Muenter-Str. 1<br>
D-82110 Germering, Germany<br>
Managing director (Geschäftsführer): Ansgar Dodt and Gary Clark<br>
Company Registration number: Amtsgericht Muenchen HRB 171025<br>
________________________________________________<br>
</font>
</body>
</html>

<br>
The information contained in this electronic mail transmission <br/>may be privileged and confidential, and therefore, protected <br/>from disclosure. If you have received this communication in <br/>error, please notify us immediately by replying to this <br/>message and deleting it from your computer without copying <br/>or disclosing it.<br/><br/>