QEMU'yu geçmeyi vaat eden bir x86-64 öykünücüsünü kırpın

yanıp sönme-gcc

Göz kırpma çalıştırmanın ekran görüntüsü

Geçenlerde bir haber çıktı ki, proje Blink yeni bir emülatör geliştiriyor x86-64 işlemcinin derlenmiş Linux uygulamalarını çalıştırmanıza izin verir öykünülmüş bir işlemciye sahip bir sanal makinede statik olarak.

e olduğu belirtiliyorana hedef projenin x86-64 mimarisi için derlenmiş Linux programlarının diğer işletim sistemlerinde çalıştırılabilmesini sağlamaktır. (macOS, FreeBSD, NetBSD, OpenBSD) ve farklı donanım mimarisine sahip bilgisayarlarda (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Proje deposunda, yanıp sönmeyi şu şekilde tanımlarlar:

Flash, farklı işletim sistemlerinde ve donanım mimarilerinde statik olarak derlenmiş x86-64-linux programları çalıştıran bir sanal makinedir. qemu-x86_64 komutuyla aynı şeyi yapmak üzere tasarlanmıştır, ancak (a) 4 mb'lik bir ikili dosya olmak yerine, Blink'in yalnızca ~160 kb'lik bir alanı vardır; ve (b) Blink, GCC'yi taklit etmek gibi bazı kıyaslamalarda Qemu'dan 2 kat daha hızlıdır. Ödev, Blink'in Qemu kadar çok özelliğe sahip olmamasıdır. Son derece küçük ve kısa ömürlü programları çok daha hızlı çalıştıran bir sanal makine istediğinizde Blink mükemmel bir seçimdir. Bu aracın motivasyonları hakkında daha fazla ayrıntı için lütfen https://justine.lol/ape.html adresini okuyun.

Projenin, Linux için taahhüt izolasyon mekanizmasının bir limanı olan Cosmopolitan C kütüphanesi ve Redbean evrensel yürütülebilir dosya sistemi gibi gelişmelerin yazarı tarafından geliştirildiğini belirtmekte fayda var.

İşlevsellik açısından, Göz kırpma, qemu-x86_64 komutuna benziyorAncak daha kompakt bir tasarım ve performansta önemli bir artış ile QEMU'dan farklıdır. Örneğin, yürütülebilir Blink, qemu-x157_4 için 86 MB yerine yalnızca 64 KB'dir ve performans açısından GCC öykünücüsünde yapılan test çalışmasında, Blink, QEMU'yu iki kez yener.

Yüksek performans sağlamak için, bir JIT derleyicisi kullanılır, kaynak komutlarını anında hedef platform için makine koduna dönüştürür (şimdiye kadar yalnızca x86_64 ve aarch64 JIT'i destekler).

Standart C kitaplıkları Cosmopolitan, Glibc ve Musl ile derlenmiş ELF, PE (Portable Executables) ve bin (Flat Executable) biçimlerindeki yürütülebilir dosyaların öykünücüsünde doğrudan başlatma desteklenir.

Bunun yanı sıra, Linux sistemine yüzden fazla çağrı desteği entegre ettiği de göze çarpıyor, fork() ve clone() dahil. i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED ve RDTSCP komut setlerinin öykünmesi desteklenir.

Buna ek olarak, proje, flashenlights yardımcı programını geliştiriyor, farklı platformlardaki programlarda hata ayıklamak, program yürütmeyi görselleştirmek ve bellek içeriklerini analiz etmek için bir arabirim sağlar. Hata ayıklayıcının bir özelliği, yürütme geçmişine geri dönmenizi ve daha önce yürütülen bir noktaya geri dönmenizi sağlayan ters hata ayıklama modu (Ters Hata Ayıklama) desteğidir.

flashenlights, tüm platformlarda x86_64-linux programlarında hata ayıklamak için kullanılabilen bir TUI arayüzüdür. GDB'den farklı olarak Blinkenlights, programın yürütülmesini görselleştirmeye odaklanır. Programınızın derleme kodunda ilerledikçe değişen ikili bellek panellerini görüntülemek için UNICODE IBM Code Page 437 karakterlerini kullanır. Bu bellek panelleri fare tekerleği ile kaydırılabilir ve büyütülebilir. Blinkenlights ayrıca, montaj ekranında çarkı kaydırmanın yürütme geçmişini geri sarmanıza izin verdiği ters hata ayıklamayı da destekler.

Son olarak, bu proje hakkında daha fazla bilgi edinmek isteyenler, proje kodunun C dilinde yazıldığını (ANSI C11) ve ISC lisansı altında dağıtıldığını bilmelidirler. Bağımlılıklardan yalnızca libc (POSIX.1-2017) gereklidir.

göz kırpmak

Blink'i deneyebilmekle ilgilenenler, derlemesinin son derece basit olduğunu bilmeliler, sadece kaynak kodunu almaları yeterli, bunu aşağıdaki bağlantıdan veya bir terminalden aşağıdaki komutu yazarak yapabilirler. :

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

Ve bununla işiniz bittiğinde, blik dizinine girmeniz ve derlemeniz yeterlidir:

cd blink

make -j4

Blink'in nasıl çalıştığı hakkında daha fazla bilgi edinmek isterseniz, bunu şu adresten yapabilirsiniz: aşağıdaki bağlantı.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: AB Internet Networks 2008 SL
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.