On Thu, Jun 9, 2022 at 10:34AM, Thomas Huth wrote:
> On 09/06/2022 16.15, Claudio Fontana wrote:
>> On 6/9/22 13:27, Claudio Fontana wrote:
>>> On 6/9/22 10:57, Daniel P. Berrangé wrote:
>>>> On Thu, Jun 09, 2022 at 10:47:24AM +0200, Thomas Huth wrote:
>>>>> On 08/06/2022 17.51, Paolo Bonzini wrote:
>>>>>> On 6/3/22 19:35, Thomas Huth wrote:
>>>>>>> On 03/06/2022 19.26, Claudio Fontana wrote:
> [...]
>>>>>>>> maybe something we can now drop if there are no more C++ users?
>>>>>>>
>>>>>>> I thought about that, too, but we still have disas/nanomips.cpp 
>>>>>>> left and the Windows-related files in qga/vss-win32/* .
>>>>>>
>>>>>> That is pure C++ so it does not need the extra complication of 
>>>>>> "detect whether the C and C++ compiler are ABI-compatible" 
>>>>>> (typically due to different libasan/libtsan implementation between 
>>>>>> gcc and clang).  So it's really just nanoMIPS that's left.
>>>>>
>>>>> Ok, so the next theoretical question is: If we get rid of the 
>>>>> nanomips.cpp file or convert it to plain C, would we then simplify 
>>>>> the code in configure again (and forbid C++ for the main QEMU 
>>>>> code), or would we rather keep the current settings in case we want 
>>>>> to re-introduce more C++ code again in the future?
>>>>>
>>>> It doesn't feel very compelling to have just 1 source file that's
>>>> C++ in QEMU. I'm curious how we ended up with this nanomips.cpp
>>>> file - perhaps it originated from another project that was C++ based 
>>>> ?
>>>>
>>>> The code itself doesn't look like it especially needs to be using
>>>> C++. There's just 1 class there and every method is associated
>>>> with that class, and external entry point from the rest of QEMU is 
>>>> just one boring method. Feels like it could easily have been done in 
>>>> C.
>>>>
>>>> Personally I'd prefer it to be converted to C, and if we want to add 
>>>> any C++ in future it should be justified & debated on its merits, 
>>>> rather than as an artifact of any historical artifacts such as the 
>>>> code in configure happening to still exist.
>>>
>>> I'll take a look at it, maybe I can turn it to C fairly quickly.
>> 
>> It seems to be generated code, getting the original authors involved in the 
>> thread.
> 
> Not sure whether the original mips folks are still around ... but the folks 
> from MediaTek recently expressed their interest in nanoMIPS:
> 
>  
> https://lore.kernel.org/qemu-devel/20220504110403.613168-8-stefan.pe...@syrmia.com/
> 
> Maybe they could help with the nanoMIPS disassembler?
> 
> I know it's likely a lot of work, but the best solution would maybe be to add 
> nanoMIPS support to capstone instead, then other projects could benefit from 
> the support in this library, too...
> 
> If I googled that right, there is a LLVM implementation of nanoMIPS available 
> here:
> 
>  
> https://github.com/milos1397/nanomips-outliner/tree/master/llvm/lib/Target/Mips__;!!CTRNKA9wMg0ARbw!ypaF-7vGkOBh5G3xybGwIuJdGpUfrMavQlYF_4T9iocgw5x994tABF_B_RsCJIdqY4vwVzA$
>  
> 
> ... so maybe that could be used as input for capstone (which is based on 
> llvm)?
> 
>  Thomas

Yes, we are working on an LLVM port for nanoMIPS.  It's functionally complete 
and pretty usable, although we're still tuning performance.  The more official 
location is https://github.com/MediaTek-Labs/llvm-project.

However, for now we're still using the binutils assembler; there's no encoding 
information in the current LLVM description.  We have tentative plans to work 
on encoding and integrated-as later this year.  Correct me if I'm wrong, but I 
would assume that, before that's available, it's not feasible to use capstone?

Regardless, I think we can look at converting the existing disassembler from 
C++ to C.  That would address the current concern, right?

-Vince

Reply via email to