De acordo com este problema que criei (https://github.com/dotnet/coreclr/issues/17294), criar um novo back-end para uma nova arquitetura é uma tarefa complexa, então por que não criar um novo back-end que suporte múltiplas arquiteturas?
Mono implementou um back-end LLVM .
Digo isso porque a arquitetura Power e s390x está voltando com relativa intensidade ...
Alguns anos atrás, trabalhamos em um gerador de código LLVM para .Net: LLILC . Encontramos vários problemas que pareciam difíceis de resolver: suporte para GC preciso, suporte completo para o modelo de exceção .Net e baixo rendimento. Você pode ler alguns dos detalhes aqui: LLILC em Seis Meses .
Mono via LLVM usa GC conservador e (pelo menos em alguns casos) não lida com toda a gama de comportamentos de exceção. Isso é aceitável para os destinos de aplicativos do Mono, mas não é geral o suficiente para nossos propósitos.
O LLILC ainda pode ser interessante como um jit de nível superior (algum dia) ou como um veículo de criação para fazer o codegen básico funcionar em uma nova arquitetura.
Olá @AndyAyersMS
Corrigi um problema de compilação simples para LLILC https://github.com/dotnet/llilc/issues/1097
Por favor, reveja.
Obrigado,
Leslie Zhai
Vou encerrar este assunto, pois a questão já foi respondida.
Comentários muito úteis
Alguns anos atrás, trabalhamos em um gerador de código LLVM para .Net: LLILC . Encontramos vários problemas que pareciam difíceis de resolver: suporte para GC preciso, suporte completo para o modelo de exceção .Net e baixo rendimento. Você pode ler alguns dos detalhes aqui: LLILC em Seis Meses .
Mono via LLVM usa GC conservador e (pelo menos em alguns casos) não lida com toda a gama de comportamentos de exceção. Isso é aceitável para os destinos de aplicativos do Mono, mas não é geral o suficiente para nossos propósitos.
O LLILC ainda pode ser interessante como um jit de nível superior (algum dia) ou como um veículo de criação para fazer o codegen básico funcionar em uma nova arquitetura.