Πρώτη έκδοση του Blink, ενός εξομοιωτή x86-64 υψηλής απόδοσης

Δημοσιεύτηκε η πρώτη σημαντική έκδοση του έργου Blink, αναπτύσσοντας έναν εξομοιωτή επεξεργαστών x86-64 που σας επιτρέπει να εκτελείτε στατικά και δυναμικά κατασκευασμένες εφαρμογές Linux σε μια εικονική μηχανή με έναν εξομοιούμενο επεξεργαστή. Με το Blink, τα προγράμματα Linux που έχουν μεταγλωττιστεί για την αρχιτεκτονική x86-64 μπορούν να εκτελεστούν σε άλλα λειτουργικά συστήματα συμβατά με POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) και σε εξοπλισμό με άλλες αρχιτεκτονικές υλικού (x86, ARM, RISC-V, MIPS , PowerPC, s390x). Ο κώδικας του έργου είναι γραμμένος σε γλώσσα C (ANSI C11) και διανέμεται με την άδεια ISC. Από τις εξαρτήσεις απαιτείται μόνο το libc (POSIX.1-2017).

Όσον αφορά τη λειτουργικότητα, το Blink είναι παρόμοιο με την εντολή qemu-x86_64, αλλά διαφέρει από το QEMU στον πιο συμπαγή σχεδιασμό και τη σημαντική αύξηση της απόδοσης. Για παράδειγμα, το εκτελέσιμο αρχείο Blink καταλαμβάνει μόνο 221 KB (με απογυμνωμένη έκδοση - 115 KB) αντί για 4 MB για το qemu-x86_64 και σε ορισμένες δοκιμές, όπως η εκτέλεση στον εξομοιωτή GCC και η εκτέλεση μαθηματικών πράξεων, έχει καλύτερη απόδοση QEMU κατά περίπου δύο φορές.

Για να διασφαλιστεί η υψηλή απόδοση, χρησιμοποιείται ένας μεταγλωττιστής JIT, ο οποίος μετατρέπει τις οδηγίες πηγής εν κινήσει σε κώδικα μηχανής για την πλατφόρμα προορισμού. Ο εξομοιωτής υποστηρίζει απευθείας εκκίνηση εκτελέσιμων αρχείων σε μορφές ELF, PE (Portable Executables) και bin (Flat εκτελέσιμα), που έχουν μεταγλωττιστεί με τις τυπικές βιβλιοθήκες C Cosmopolitan, Glibc και Musl. Ενσωματωμένη υποστήριξη για 180 κλήσεις συστήματος Linux και εξομοίωση περίπου 600 οδηγιών επεξεργαστή x86 που καλύπτουν i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT, X87, REXT, REXT, XXNUMX, σύνολα εντολών και RDTSCP.

Επιπλέον, με βάση το Blink, αναπτύσσεται το βοηθητικό πρόγραμμα blinkenlights, το οποίο παρέχει μια διεπαφή για την απεικόνιση της προόδου της εκτέλεσης του προγράμματος και την ανάλυση των περιεχομένων της μνήμης. Το βοηθητικό πρόγραμμα μπορεί να χρησιμοποιηθεί ως πρόγραμμα εντοπισμού σφαλμάτων που υποστηρίζει τη λειτουργία αντίστροφης διόρθωσης σφαλμάτων και σας επιτρέπει να μετακινηθείτε πίσω στο ιστορικό εκτέλεσης και να επιστρέψετε σε ένα σημείο που είχε εκτελεστεί προηγουμένως. Το έργο αναπτύχθηκε από τον συγγραφέα τέτοιων εξελίξεων όπως η βιβλιοθήκη Cosmopolitan C, μια θύρα του μηχανισμού απομόνωσης δεσμεύσεων για Linux και το καθολικό εκτελέσιμο σύστημα αρχείων Redbean.

Πρώτη έκδοση του Blink, ενός εξομοιωτή x86-64 υψηλής απόδοσης


Πηγή: opennet.ru

Προσθέστε ένα σχόλιο