<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Mmmhm, reading “Immediate operands” on <a href="http://www.peter-cockerell.net/aalp/html/ch-3.html" class="">http://www.peter-cockerell.net/aalp/html/ch-3.html</a>, it is kind of elegant.<div class="">I like that a sufficiently smart assembler (like, Cog? ;) ), can translate a pseudo-assembly logical op with *any* immediate operand into 1 - 4(8, for 64 bit) machine code instructions by combining different positions.</div><div class=""><br class=""></div><div class="">“All ops are 32 bits! … but some times you need 1, some times you need 8"</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">Henry <br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 10 Jan 2020, at 09:28, Eliot Miranda <<a href="mailto:eliot.miranda@gmail.com" class="">eliot.miranda@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div dir="ltr" class="">Thanks, Henry!<br class=""></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 6, 2019 at 1:53 AM Henrik Sperre Johansen <<a href="mailto:henrik.s.johansen@veloxit.no" class="">henrik.s.johansen@veloxit.no</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> <br class="">
commits-2 wrote<br class="">
> ARMv8 has an amazingly exotic scheme for encoding bitfields as immediates<br class="">
> in logical operations.  Copy LLVM's encoder.  So far this is unverified<br class="">
> because I cannot make sense of <br class="">
>       immN:NOT(imms)<br class="">
> in<br class="">
>               len = HighestSetBit(immN:NOT(imms));<br class="">
> in DecodeBitMasks on page J1-7389 of the Arm ARM.<br class="">
> If you can make sense of this either consider fully implementing<br class="">
> CogARMv8Compiler>>decodeBitMasksN:imms:immr: or explaining to me what is<br class="">
> meant by "immN:NOT(imms)" (via email to OpenSMalltalk-VM ?).<br class="">
> <br class="">
> AdvThanksance.<br class="">
<br class="">
Is line 91 of<br class="">
<a href="https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Processors/AARCH64/src/main/java/DecodeBitMasks.java" rel="noreferrer" target="_blank" class="">https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Processors/AARCH64/src/main/java/DecodeBitMasks.java</a><br class="">
of any help?<br class="">
<br class="">
Iow, <br class="">
: -> concatenate bits<br class="">
NOT -> ... not<br class=""></blockquote><div class=""><br class=""></div><div class="">In the end no.  I found other more concise code to study.  But thanks fir the heads up.  Clever, though, isn't it?  I think I would never have come up with a similar scheme myself.</div></div><br class=""><div dir="ltr" class="gmail_signature"><div dir="ltr" class=""><div class=""><span style="font-size:small;border-collapse:separate" class=""><div class="">_,,,^..^,,,_<br class=""></div><div class="">best, Eliot</div></span></div></div></div></div>
</div></blockquote></div><br class=""></div></body></html>