Penyusun C#

王林
王林asal
2024-09-03 15:03:031344semak imbas

C# Complier boleh ditakrifkan sebagai komponen terbina dalam yang digunakan untuk menukar kod program C# menjadi kod bahasa yang boleh dibaca mesin, yang mengembalikan fail output dalam bentuk fail .dll atau fail .exe. C# mempunyai dua jenis kaedah kompilasi iaitu Common Language Runtime compiling (CLR) dan Just in time compiling (JIT). Penyusun JIT selanjutnya diklasifikasikan sebagai pengkompil Pra JIT, pengkompil JIT Biasa dan pengkompil Econo JIT. Beberapa alatan yang biasa digunakan untuk tujuan penyusunan ini ialah C# compiler 2.0, C# compiler 3.5, C# compiler 4.x, Roslyn and Mono Compiler.

Penyusun C#

Jadi, selepas bahasa perantaraan dijana, kami perlu menukar IL ini kepada kod mesin kerana pemproses hanya memahami kod mesin.  Jadi kami menggunakan CLR (Common Language Runtime) untuk penukaran ini. CLR ialah program yang berjalan pada komputer dan menukar kod IL kepada kod mesin dengan bantuan Just-In-Time (biasa dipanggil JIT). Apabila kami mengklik dua kali pada fail .exe pengkompil JIT dipanggil dan menyusun kod IL pada bahagian masa itu, jadi itulah sebabnya ia dinamakan JUST-IN-TIME(JIT).

Penyusun C#

Kompilasi boleh dilakukan secara tersirat atau tersurat. Kompilasi tersirat ialah kompilasi dua kali di mana pertama, ia disusun IS dan selepas itu, ia disusun kepada bahasa mesin. Proses ini dipanggil kompilasi JIT atau kompilasi JUST-In-Time. JIT menyokong berbilang platform dan mempercepatkan pelaksanaan kod.

Jenis Pengkompil Just-In-Time

Terdapat tiga Pengkompil Just-In-Time yang berbeza

1. Penyusun Pra JIT

Dalam pengkompil ini, hanya terdapat satu proses penyusunan kerana keseluruhan kod sumber disusun ke dalam kod asli.

2. Pengkompil JIT biasa

Dalam pengkompil ini, hanya kaedah tersebut disusun ke dalam kod mesin, yang diperlukan pada masa jalankan. Pengkompil menyusun kaedah tersebut, menyimpannya dalam cache dan menggunakan kaedah yang sama sekali lagi.

3. Pengkompil Econo JIT

Dalam pengkompil ini, hanya kaedah tersebut disusun ke dalam kod mesin yang diperlukan pada masa larian namun kaedah ini dialih keluar jika ia tidak diperlukan. Dalam JIT, hanya kaedah yang diperlukan disusun pada masa larian, oleh itu, ia memerlukan penggunaan memori yang kurang.

Dalam rajah di atas

1-3 langkah akan dilaksanakan pada masa penyusunan

3-5 langkah akan dilaksanakan pada masa larian.

Jadi, apabila kita menjalankan dua jenis ralat ini berlaku.

Ralat Masa Jalanan dan Ralat Pengkompil

  • Ralat Pengkompil: Ralat jenis ini berlaku dalam pengkompil C# itu sendiri. Ia menghalang kod C# untuk disusun ke dalam format .exe. Ralat ini pada asasnya berlaku kerana ralat sintaks, Apabila kami salah mengeja sebarang sintaks atau terlepas koma atau koma bernoktah, maka pengkompil tidak memahami ini jadi ia menghentikan pemprosesan dan membuang ralat masa kompilasi. Kita boleh melihat ralat ini dalam tetingkap keluaran IDE. Jadi dengan memeriksa ralat ini, kami boleh membetulkan kod kami.
  • Ralat Masa Jalan: Ini adalah ralat masa nyata. Ini berlaku apabila kod berjaya disusun tetapi menghadapi sebarang masalah semasa berjalan. Ini memberi kesan kepada tingkah laku kod. Sebagai contoh, kita boleh katakan apabila kita cuba membahagi sebarang nombor dengan sifar pada masa itu ralat masa larian berlaku. Ralat ini lebih membosankan daripada ralat pengkompil kerana dalam kes ini, kita perlu membetulkan tingkah laku kod.

Penyusun C#

Jenis Penyusun C#

Penyusun Microsoft yang lebih awal dinamakan sebagai .Net Framework seperti C# compiler 2.0, C# compiler 3.5, C# compiler 4.x, dsb. Penyusun ini tidak ditulis dalam C# atau kita boleh katakan C# tidak disusun oleh C#. Penyusun lain yang wujud selepas ini ialah:

1. Roslyn

Terdahulu pengkompil telah ditulis dalam C/C++. Roslyn ialah pengkompil .Net sumber terbuka di mana kod C++ diganti. Ia mengambil jenis elemen dalam kod, hubungannya antara satu sama lain. Oleh kerana pasukan C# dan VB menulis pengkompil, templat studio visual tersedia untuk kedua-duanya. Ia membolehkan kami menulis kod yang menghuraikan  fail sumber dan Mudah untuk kami mengubah suai kod sumber.

Berikut ialah empat lapisan API Roslyn

  • API Skrip: Lapisan ini menyediakan konteks pelaksanaan masa jalan dan membolehkan kami menggunakan C# sebagai bahasa skrip dan tidak mempunyai pergantungan pada komponen studio visual.
  • API Pengkompil: Lapisan ini digunakan untuk sintaks dan mengandungi rujukan untuk perhimpunan dan fail kod sumber. Lapisan ini juga tidak mempunyai kebergantungan pada komponen studio visual.
  • API Perkhidmatan: Lapisan ini menyediakan IntelliSense, pemformatan, Cari Semua Rujukan, dsb. di bahagian atas SDK. Ia juga membantu dalam mengurus maklumat tentang projek dan mengurus kebergantungan projek.
  • API Ruang Kerja: Lapisan ini terutamanya untuk analisis kod dan pemfaktoran semula melalui IDE. Roslyn menjadikan kod lebih mudah dan terdiri daripada satu set API seperti pengkompil dan perkhidmatan yang menyediakan banyak fungsi seperti pemformatan, Intellisense, dll. Ia menyediakan sokongan kepada berbilang bahasa. API Ruang Kerja memberikan maklumat mendalam tentang kod sumber.

2. Penyusun Mono

Pengkompil Mono C# berdasarkan piawaian ECMA untuk C#. Ia mempunyai berbilang versi dengan rangka kerja seperti C# 1.0, 2.0, 3.0, 4.0. Pengkompil mono mcs menyasarkan rangka kerja 1.1, gmcs menyasarkan rangka kerja 2.0 manakala smcs dan dmcs menyasarkan rangka kerja 2.1 dan 4.0 masing-masing.

  • mcs: Ia menyokong semua ciri C# 1.1 seperti kaedah tanpa nama, jenis nullable, penimbal tetap, pengubah akses pada sifat, kelas statik, dll.
  • gmcs: Ia menyokong ciri C# 2.0 seperti ungkapan pertanyaan, pemula objek, kaedah separa, ungkapan lambda, sifat yang dilaksanakan secara automatik, dll.
  • dmcs: Ia menyokong ciri C# 4.0 yang termasuk argumen bernama, varians jenis generik, pengikatan dinamik, dsb.

Pengkompil lain seperti pengkompil RemObjects C# yang mengikut piawaian C# mengikut spesifikasi EMCA dan selain itu terdapat pengkompil GNU C# yang melaksanakan C# dan .Net.

Kesimpulan

Pengkompil C# sama seperti pengkompil lain yang menyusun kod ke dalam kod mesin supaya pemproses boleh memahami prosesnya.

Atas ialah kandungan terperinci Penyusun C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Ruang nama dalam C#Artikel seterusnya:Ruang nama dalam C#