[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: eseguire software di un'architettura hardware diversa da quella del proprio sistema (ERA: Re: Ancora CIE e middleware)



On Tue, Oct 19, 2021 at 11:03:09PM +0200, Alessandro Rubini wrote:
> > notably 64bit kernels often support running 
> > 32bit software (but most probably not the converse)" che non sembra 
> > escludere definitivamente
> 
> Se il mondo non e` cambiato nel frattempo, mi sentirei di escluderlo.
> Un eseguibile a 64 bit usa puntatori a 64 bit e vuole una memoria
> virtuale a 64 bit (non ricordo quanti, ma piu` di 32). Se il kernel
> e` a 32 bit, offre una memoria virtuale a 32.
> 
> > "or a qemu-user instance is configured 
> > to act as an on-the-fly emulation layer, see QemuUserEmulation"
> 
> Questo funziona come un gioiellino. Ma ovviamente il codice viene
> interpretato (da qemu), non eseguito, quindi va piu` lento. Qemu e`
> straordinariamente efficente (e` Fabrice Bellard, mica l'ultimo
> pistola) ma comunque siamo circa 10x piu` lento del nativo.
> 
> > La cosa è molto interessante e, ad avere tempo, sarebbe da sperimentare
> 
> E' banale. Si prende un eseguibile arm e si esegue. E` uno dei primi
> esempi che faccio ai miei studenti, partendo da PC per andare su
> micretto.
> 
> Certo, se e` un eseguibile "serio" occorrono anche le librerie dinamiche
> dell'architettura eccetera. Io lo faccio vedere senza libreria,
> implementando le 2 chiamate di sistema che mi servono (write e exit):
> 
>    laptopo% make hell-arm
>    arm-none-eabi-gcc    -c -o syscalls-arm.o syscalls-arm.S
>    arm-none-eabi-gcc -Wall -static -ffreestanding   -c -o hell.o hell.c
>    arm-none-eabi-ld -e main -o hell-arm syscalls-arm.o hell.o
> 
>    laptopo% ./hell-arm
>    Hello
> 
>    laptopo% file hell-arm
>    hell-arm: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped
> 
>    laptopo% uname -m
>    x86_64
> 
> Il trucco sta in binfmtmisc, che definisce interpreti per vari formati
> di file, in base al contenuto del file (il "magic number"):
> 
>    laptopo% ls /proc/sys/fs/binfmt_misc/
>    cli              qemu-aarch64     qemu-mips        qemu-sh4
>    jar              qemu-alpha       qemu-mipsel      qemu-sh4eb
>    llvm-3.1.binfmt  qemu-arm         qemu-ppc         qemu-sparc
>    python2.6        qemu-armeb       qemu-ppc64       qemu-sparc32plus
>    python2.7        qemu-cris        qemu-ppc64abi32  qemu-sparc64
>    python3.2        qemu-m68k        qemu-ppc64le     register
>    python3.4        qemu-microblaze  qemu-s390x       status

Alex al solito sei stellare, questa mail me la salvo...

Si lo so, dirai, banale, ok ...  per te, e una volta che l'ho letta,
anche per me. È questo il punto: è tutto semplice _dopo_ che lo sai.

GRAZIE

--

Saluton,
Marco Ciampa


Reply to: