Gcwalisa i-emulator ye-x86-64 ethembisa ukudlula i-QEMU

blink-gcc

Isithombe-skrini sokucwayiza siyasebenza

Kusanda kuvela izindaba zokuthi lo msebenzi U-Blink wenza i-emulator entsha ye-x86-64 processor ukuthi ikuvumela ukuthi usebenzise izinhlelo zokusebenza ze-Linux ezihlanganisiwe ngokwezibalo kumshini obonakalayo onephrosesa elingisiwe.

Kushiwo ukuthi einhloso enkulu wephrojekthi ukuhlinzeka ngamakhono okusebenzisa izinhlelo ze-Linux ezihlanganiselwe ukwakheka kwe-x86-64 kwamanye amasistimu wokusebenza (i-macOS, i-FreeBSD, i-NetBSD, i-OpenBSD) nakumakhompyutha anesakhiwo sehadiwe ehlukile (x86, ARM, RISC-V, MIPS, PowerPC, s390x).

Kunqolobane yephrojekthi bachaza ukucwayiza ngale ndlela elandelayo:

I-blink ingumshini obonakalayo osebenzisa izinhlelo ze-x86-64-linux ezihlanganisiwe kumasistimu wokusebenza ahlukene kanye nezakhiwo zehadiwe. Iklanyelwe ukwenza into efanayo nomyalo we-qemu-x86_64, ngaphandle kokuthi (a) esikhundleni sokuba kanambambili ongu-4mb, i-Blink ine-footprint engu-~160kb kuphela; futhi (b) Ukucwayiza kushesha ngo-2x kune-Qemu kwamanye amabhentshimakhi, njengokulingisa i-GCC. I-tradeoff ukuthi i-Blink ayinazo izici eziningi njengo-Qemu. I-Blink ilingana kahle uma ufuna umshini obonakalayo omncane kakhulu futhi osebenzisa izinhlelo ze-ephemeral ngokushesha okukhulu. Ukuze uthole imininingwane eyengeziwe ngezisusa zaleli thuluzi, sicela ufunde okuthi https://justine.lol/ape.html.

Kuhle ukusho ukuthi iphrojekthi ithuthukiswe umlobi wentuthuko efana nomtapo wezincwadi we-Cosmopolitan C, ichweba lendlela yokuzibophezela yokuhlukanisa i-Linux kanye nesistimu yefayela esebenzisekayo yomhlaba wonke ye-Redbean.

Mayelana nokusebenza, Ukucwayiza kubukeka njengomyalo othi qemu-x86_64, kodwa ihluke ku-QEMU ngomklamo ohlangene kanye nokwenyuka okuphawulekayo kokusebenza. Isibonelo, ifayela elisebenzisekayo le-Blink lingu-157 KB kuphela esikhundleni sika-4 MB ku-qemu-x86_64, futhi mayelana nokusebenza ekuhlolweni okwenziwa kusifanisi se-GCC, I-Blink ihlula i-QEMU kabili.

Ukuqinisekisa ukusebenza okuphezulu, kusetshenziswa i-JIT compiler, okuguqula imiyalelo yomthombo ibe ikhodi yomshini yenkundla okuqondiswe kuyo endizeni (kuze kube manje kuphela i-x86_64 ne-arch64 esekela i-JIT).

Ukwethulwa okuqondile kusifanisi samafayela asebenzisekayo kumafomethi we-ELF, PE (Portable Executables) kanye ne-bin (Flat Executable), ehlanganiswe nemitapo yolwazi evamile ye-C ethi Cosmopolitan, Glibc ne-Musl iyasekelwa.

Ngaphandle kwalokho, Kuphinde kugqame ukuthi inokusekelwa okuhlanganisiwe kwezingcingo ezingaphezu kwekhulu ohlelweni lweLinux, kufaka phakathi imfoloko() kanye ne-clone(). Ukulingisa i-i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT), X87, RDRND, RDSEED, namasethi emiyalo ye-RDTSCP kuyasekelwa.

Futhi, iphrojekthi ithuthukisa insiza ye-blinkenlights, okunikeza isixhumi esibonakalayo sezinhlelo zokulungisa iphutha ezisekelweni ezihlukene, ukubona ukusebenza kohlelo, nokuhlaziya okuqukethwe yinkumbulo. Isici se-debugger ukusekelwa kwemodi yokuhlehla yokulungisa iphutha (Ukuhlehlisa Ukulungisa iphutha), okukuvumela ukuthi ubuyele emuva kumlando wokusebenzisa futhi ubuyele endaweni esetshenziswe ngaphambilini.

I-blinkenlights iyisixhumi esibonakalayo se-TUI esingasetshenziswa ukulungisa iphutha lezinhlelo ze-x86_64-linux kuwo wonke amapulatifomu. Ngokungafani ne-GDB, i-Blinkenlights igxile ekuboneni ngeso lengqondo ukwenziwa kohlelo. Isebenzisa izinhlamvu ze-UNICODE IBM Code Page 437 ukuze ibonise amaphaneli ememori kanambambili, ashintshayo njengoba uhamba phakathi kwekhodi yokuhlanganisa yohlelo lwakho. Lawa maphaneli enkumbulo angaskrolwa futhi akhuliswe ngesondo legundane. I-Blinkenlights iphinde isekele ukulungisa amaphutha, lapho ukuskrola isondo esikrinini somhlangano kukuvumela ukuthi ubuyisele emuva umlando wokwenza.

Okokugcina, kulabo abathanda ukufunda okwengeziwe ngale phrojekthi, kufanele bazi ukuthi ikhodi yephrojekthi ibhalwe ku-C (ANSI C11) futhi isakazwa ngaphansi kwelayisensi ye-ISC. Kokuncika, i-libc kuphela (POSIX.1-2017) edingekayo.

uthole blink

Kulabo abanesifiso sokukwazi ukuzama ukucwayiza, kufanele bazi ukuthi ukuhlanganiswa kwayo kulula kakhulu, kufanele bathole ikhodi yomthombo wayo kuphela, bangayenza kusuka kusixhumanisi esilandelayo noma kutheminali ngokuthayipha umyalo olandelayo. :

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

Futhi usuqedile ngakho, kufanele nje ufake umkhombandlela we-blik bese uhlanganisa:

cd blink

make -j4

Uma ufuna ukwazi okwengeziwe mayelana nokuthi i-Blink isebenza kanjani, ungayenza kusukela ku- isixhumanisi esilandelayo.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Unomthwalo wemfanelo ngedatha: AB Internet Networks 2008 SL
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.