Αναβοσβήνει ένας εξομοιωτής x86-64 που υπόσχεται να ξεπεράσει το QEMU

αναβοσβήνει-gcc

Στιγμιότυπο οθόνης της εκτέλεσης αναλαμπής

Πρόσφατα έγινε γνωστό ότι το έργο Η Blink αναπτύσσει έναν νέο εξομοιωτή του επεξεργαστή x86-64 που σας επιτρέπει να εκτελείτε μεταγλωττισμένες εφαρμογές Linux στατικά σε εικονική μηχανή με προσομοιωμένο επεξεργαστή.

Αναφέρεται ότι εο κύριος στόχος του σχεδίου είναι να παρέχει τη δυνατότητα εκτέλεσης προγραμμάτων Linux που έχουν μεταγλωττιστεί για την αρχιτεκτονική x86-64 σε άλλα λειτουργικά συστήματα (macOS, FreeBSD, NetBSD, OpenBSD) και σε υπολογιστές με διαφορετική αρχιτεκτονική υλικού (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Στο αποθετήριο του έργου περιγράφουν το blink ως εξής:

Το blink είναι μια εικονική μηχανή που εκτελεί στατικά μεταγλωττισμένα προγράμματα x86-64-linux σε διαφορετικά λειτουργικά συστήματα και αρχιτεκτονικές υλικού. Έχει σχεδιαστεί για να κάνει το ίδιο πράγμα με την εντολή qemu-x86_64, με τη διαφορά ότι (α) αντί να είναι δυαδικό 4mb, το Blink έχει μόνο ~160kb αποτύπωμα. και (β) Το Blink είναι 2 φορές πιο γρήγορο από το Qemu σε ορισμένα σημεία αναφοράς, όπως η εξομοίωση του GCC. Το αντάλλαγμα είναι ότι το Blink δεν έχει τόσα χαρακτηριστικά όπως το Qemu. Το Blink ταιριάζει τέλεια όταν θέλετε μια εικονική μηχανή που είναι εξαιρετικά μικρή και εκτελεί εφήμερα προγράμματα πολύ πιο γρήγορα. Για περισσότερες λεπτομέρειες σχετικά με τα κίνητρα αυτού του εργαλείου, διαβάστε τη διεύθυνση https://justine.lol/ape.html.

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

Από πλευράς λειτουργικότητας, Το Blink μοιάζει με την εντολή qemu-x86_64Αλλά διαφέρει από το QEMU σε πιο συμπαγή σχεδιασμό και σημαντική αύξηση στην απόδοση. Για παράδειγμα, το εκτελέσιμο αρχείο Blink είναι μόνο 157 KB αντί για 4 MB για qemu-x86_64 και ως προς την απόδοση στη δοκιμαστική εκτέλεση στον εξομοιωτή GCC, Το Blink χτυπά το QEMU δύο φορές.

Για να εξασφαλίσετε υψηλή απόδοση, χρησιμοποιείται ένας μεταγλωττιστής JIT, που μετατρέπει τις οδηγίες πηγής σε κώδικα μηχανής για την πλατφόρμα στόχο εν κινήσει (μέχρι στιγμής μόνο τα x86_64 και aarch64 υποστηρίζουν JIT).

Υποστηρίζεται η άμεση εκκίνηση στον εξομοιωτή εκτελέσιμων αρχείων σε μορφές ELF, PE (Portable Executables) και bin (Flat Executable), που έχουν μεταγλωττιστεί με τις τυπικές βιβλιοθήκες C Cosmopolitan, Glibc και Musl.

Εκτός αυτού, Ξεχωρίζει επίσης ότι έχει ενσωματωμένη υποστήριξη για περισσότερες από εκατό κλήσεις προς το σύστημα Linux, συμπεριλαμβανομένων των fork() και clone(). Υποστηρίζεται εξομοίωση των συνόλων εντολών i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED και RDTSCP.

Επιπλέον, το έργο αναπτύσσει το βοηθητικό πρόγραμμα blinkenlights, που παρέχει μια διεπαφή για τον εντοπισμό σφαλμάτων προγραμμάτων σε διαφορετικές πλατφόρμες, την οπτικοποίηση της εκτέλεσης του προγράμματος και την ανάλυση του περιεχομένου της μνήμης. Ένα χαρακτηριστικό του προγράμματος εντοπισμού σφαλμάτων είναι η υποστήριξη για λειτουργία αντίστροφης διόρθωσης σφαλμάτων (Reverse Debugging), η οποία σας επιτρέπει να επιστρέψετε στο ιστορικό εκτέλεσης και να επιστρέψετε σε ένα σημείο που είχε εκτελεστεί προηγουμένως.

Το blinkenlights είναι μια διεπαφή TUI που μπορεί να χρησιμοποιηθεί για τον εντοπισμό σφαλμάτων προγραμμάτων x86_64-linux σε όλες τις πλατφόρμες. Σε αντίθεση με το GDB, το Blinkenlights εστιάζει στην οπτικοποίηση της εκτέλεσης του προγράμματος. Χρησιμοποιεί χαρακτήρες UNICODE IBM Code Page 437 για να εμφανίσει δυαδικούς πίνακες μνήμης, οι οποίοι αλλάζουν καθώς μετακινείστε στον κώδικα συναρμολόγησης του προγράμματός σας. Αυτά τα πάνελ μνήμης μπορούν να μετακινηθούν και να μεγεθυνθούν με τον τροχό του ποντικιού. Το Blinkenlights υποστηρίζει επίσης την αντίστροφη αποσφαλμάτωση, όπου η κύλιση του τροχού στην οθόνη συναρμολόγησης σάς επιτρέπει να επαναφέρετε το ιστορικό εκτέλεσης.

Τέλος, για όσους ενδιαφέρονται να μάθουν περισσότερα για αυτό το έργο, θα πρέπει να γνωρίζουν ότι ο κώδικας του έργου είναι γραμμένος σε C (ANSI C11) και διανέμεται με την άδεια ISC. Από τις εξαρτήσεις απαιτείται μόνο το libc (POSIX.1-2017).

να αναβοσβήνει

Για όσους ενδιαφέρονται να δοκιμάσουν το blink, θα πρέπει να γνωρίζουν ότι η μεταγλώττιση του είναι εξαιρετικά απλή, δεν έχουν παρά να λάβουν τον πηγαίο κώδικα του, μπορούν να το κάνουν από τον παρακάτω σύνδεσμο ή από ένα τερματικό πληκτρολογώντας την παρακάτω εντολή :

git https://github.com/jart/blink.git

Και τελειώνοντας με αυτό, απλά πρέπει να εισαγάγετε τον κατάλογο blik και να μεταγλωττίσετε:

cd blink

make -j4

Εάν θέλετε να μάθετε περισσότερα για το πώς λειτουργεί το Blink, μπορείτε να το κάνετε από το παρακάτω σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.