[LLVMdev] registerSize on X86 confused?

Craig Topper craig.topper at gmail.com
Tue Apr 1 17:22:45 PDT 2014


I looked at this briefly, I think it causes some mistakes that get reversed
later in fixupReg. The disassembler design is a bit of a mess with regards
to prefixes and operand size.


On Tue, Apr 1, 2014 at 4:43 PM, Jun Koi <junkoi2004 at gmail.com> wrote:

>
>
>
> On Mon, Mar 31, 2014 at 11:48 PM, Jun Koi <junkoi2004 at gmail.com> wrote:
>
>> Hi,
>>
>> In file X86DisassemblerDecoder.c, we have function readPrefixes() with
>> below code:
>>
>> .....
>>   } else if (insn->mode == MODE_32BIT) {
>>     insn->registerSize       = (hasOpSize ? 2 : 4);
>>     insn->addressSize        = (hasAdSize ? 2 : 4);
>>     insn->displacementSize   = (hasAdSize ? 2 : 4);
>>     insn->immediateSize      = (hasOpSize ? 2 : 4);
>>   }
>> ....
>>
>> This is confused to me: so we have registerSize to be either 2 or 4 bytes.
>> But we might have instruction like:
>>
>>      adc    al, 0x89
>>
>> This case we should have registerSize = 1 for AL. So is this a bug, or I
>> am misunderstanding the meaning of this "registerSize" ??
>>
>>
> any help please?
>
> thanks.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>


-- 
~Craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140401/cbe8d415/attachment.html>


More information about the llvm-dev mailing list