Yüksek Bütünlüklü Derleme – Bir vaka çalışması (1) – Derleme Örneği – Adım Adım Derleme Tezi – Bilimsel Derleme Nasıl Yapılır? – Bilimsel Derleme Yaptırma – Bilimsel Derleme Yaptırma Ücretleri

Sorun
Bir yazılım parçasının arızalanması yaralanma veya yaşam kaybına, ekipmanda önemli hasara, ciddi “finansal kayıp” ya da çevresel hasara yol açacaksa, o zaman bu yazılım zararlı bütünlük uygulaması güvenlik açısından kritiktir. bu tür bir yazılım potansiyel olarak, bu nedenle başarısızlık olasılığını en aza indirmek önemlidir.
Yüksek bütünlüklü uygulamalar dili yazmanın tek “güvenli” yolunun, yalnızca dili yeterince yakın olduğu için, bu sırada ne olması gerektiğinden emin olabileceğinden emin olabileceğimizi savundu.
Donanımın montajını kullanarak yürütmeyi programlayan ve yalnızca montajcıları – yani montaj dilini makine koduna çevirenleri doğrulamak için yeterince basittir ve dolayısıyla güvenilirdir. Donanımdan montaj dillerinden daha fazla kaldırılan yüksek seviyeli dillere güvenmemek için verilen iki ana neden vardır.
İlk olarak, yüksek seviyeli diller karmaşıktır ve pratik olarak tanımlanır. Onların ilgili ve belirsiz anlambilimleri, böyle bir dilde yazılmış bir programın, yürütüldüğünde ne yapması gerektiğini bilmenin ne anlama geldiğini bilmeyi imkansız kılar.
Öyleyse, böyle bir dilde yazılmış bir programa bakmanın, bazı durumlarda bir parçanın ne yaptığını bulmanın tek yolu, bazı durumlarda “ gerçek ” makinede çalıştırmak için nasıl çevrilmesi gerektiğini bilmek imkansızdır. es onu çalıştırmak ve görmektir.İkincisi, bir derleyicinin kendisi zorunlu olarak karmaşık bir yazılım parçasıdır ve hataları olacaktır.
Dolayısıyla, yüksek seviyeli dil programlarının anlamı hakkında bir fikir sahibi olmak mümkün olsa bile, bir derleyicinin bu anlamı doğru bir şekilde uyguladığına dair herhangi bir güvene sahip olmak imkansızdır. Sorun sadece yüksek seviyeli dillerle sınırlı değildir; bazı mo dern çipler o kadar büyük karmaşık komut setlerine sahiptir ki, bu çiplerin montaj dilleri ve birleştiricileri yüksek bütünlüklü uygulamalar için güvenilir değildir.
Bu argümanda bir doğruluktan daha fazlası vardır. Bazı programlama dilleri meşhur bir şekilde anlam bilimine sahiptir ve bunların ilgili derleyicileri, hatalar için tüm ilgili potansiyellere sahip büyük karmaşık yazılım parçalarıdır.
Ancak, yüksek bütünlüklü uygulamalar büyüdükçe ve daha karmaşık hale geldikçe, dilinin kullanımı olanaksız hale geliyor – büyük dili programları, kaçınılması gereken yüksek seviyeli dillerin yasaklanması kadar çok hata sergileyebilir. Yüksek seviyeli diller, tüm yazılım mühendisliği avantajları ile birlikte gerekli hale gelmektedir Bu çatışan gereksinimler nasıl uzlaştırılabilir?
“En azından” ilk adım olarak aşağıdaki koşulların karşılanması gerekir.
1. Yüksek seviyeli kaynak dil, belirli bir hedef makinede yürütülmesinin bağımsız sonunu çıkarmak için mümkün olmalıdır
bir hedef – belirsiz bir anlamı – herhangi bir programın mantıksal davranışına sahip olmalıdır.
2. Bu, diğer şeylerin yanı sıra, kaynak dilin matematiksel olarak tanımlanmış bir semantiğe sahip olması gerektiğini ima eder.Aksi takdirde, belirli bir programı çalıştırmanın etkisinin ne olması gerektiğini bile çıkarmak imkansızdır.
3. Hedef makine dilinin matematiksel olarak tanımlanmış bir sekans içermesi gerekir. Aksi takdirde, derleme çevirisinin doğru olduğunu kanıtlamak imkansızdır.
4. Kaynaktan hedef dile kadar derleyici doğru olmalıdır. Dolayısıyla kaynak dilin ve hedef makinenin dilinin anlambiliminden türetilmelidir.
5. Doğrulamaya izin vermek için – yüksek bütünlüklü bir dil için derleyicinin doğru olduğu görülmelidir Açıkça yazılmalı ve anlambilimle açıkça ilişkili olmalıdır.
6. Derleyici tarafından üretilen hedef kod açık olmalıdır be ve kaynak kod koduyla kolayca ilişkilendirilmelidir. Bu, yüksek bütünlüklü uygulamalar için bir gereklilik olan derleme sürecine görünürlük sağlar.
7. Kaynak ve hedef diller için anlambilim, önceden inceleme ve eleştiri için kullanılabilir olmalıdır.
Son üç nokta, sahip oldukları çok daha katı doğrulama ve görünürlük gereksinimlerine uyum sağlamak için yüksek bütünlük uygulamaları için önemlidir.
Kaynak kod ve hedef kod arasında görünür bir bağlantı gereksinimi, en kolay şekilde imp eratif – stil kaynak dilleri tarafından karşılanır, çünkü onların durum tabanlı modelleri çoğu temel donanımla iyi bir şekilde eşleşir Daha yüksek seviyeli diller bildirimsel gibi diller makineden çok daha fazla uzaklaştırılmıştır ve bağlantıyı göstermek kesinlikle daha zordur Bu nedenle, bu belgede daha sonra anlatılan kaynak dil, kesin olmayan bir dildir.
Yukarıdaki gereksinimlere ek olarak – üst düzey dilde yazılmış yüksek bütünlüklü uygulamanın doğruluğunun kanıtlanması ve fiziksel donanımın montaj dilinin anlamını doğru bir şekilde uyguladığını göstermenin aynı derecede çetrefilli sorunları da ele alınmalıdır Bunlar bu işin kapsamının ötesinde tamam mı?
Bu yazı dizisinde kaynak ve hedef dillerin anlam bilimlerinin matematiksel belirtimlerinden yüksek güvenceli bir derleyici oluşturmak için bir yaklaşım açıklanmaktadır.
Bunun bir destekleyici olmadığını ve de bu yaklaşımın genel, saf derleyiciler yazmanın bir yolu olduğu iddiası olduğunu unutmayın. Daha ziyade, belirli bir dilin matematiksel ifadesinin yüksek bütünlüklü derleyici geliştirmede nasıl kullanılabileceğini gösterir.
Anlambilim
Doğru bir derleyici yazmak için, kaynak ve hedef dillerin matematiksel olarak tanımlanmış bir anlambilimine sahip olmak gerekir. Programlama dillerinin anlambilimini tanımlamanın çeşitli yolları vardır her biri farklı amaçlar için uygundur. Bir dili yüksek bütünlüklü bir derleyicinin yapabileceği şekilde tanımlama amacına her biçim eşit derecede uygun değildir. açıkça ondan türetilmelidir.
Aksiyomatik anlambilim, bir dili, programları hakkında akıl yürütmek için iddialar ve çıkarım kuralları sağlayarak tanımlar.
İddialar aşağıdaki gibi ifade edilebilir:
- fP gS fQ g
Burada S, bir program parçasıdır ve P ve Q, program durumları üzerinden tahminlerdir Üçlü, ön koşul P’nin S program parçasının yürütülmesinden önce b tutması ve S sona ermesi durumunda son koşul Q’nun daha sonra tutulacağını ileri sürer.
Bu, doğruysa, akıl yürütürken H’nin de doğru olduğunu belirtir. Ve bu kural, Q’nun üst koşulunun sağlandığını ispatlamak için bir eğer yapı hakkında mantık yürütürken, bunun t tarafından kurulduğunu kanıtlamanın yeterli olduğunu belirtir.
Her ne zaman tutarsa ve f tarafından her ne zaman olursa, her durumda tutmazsa, ortak önkoşul P’nin 0 olduğu varsayılarak gerçekleştirilir. Böyle bir tanım tarzı, iki programın aynı anlamı taşıdığını, örneğin, aynı koşulu oluşturduğunu göstermek için uygun olduğunu gösterir.
Bu, örneğin örneğin anlamı tanımlama doğru optimizasyon amacıyla program dönüşümlerini koruma gibi programları hakkında mantık yürütmek için kullanışlıdır. Ne olursa olsun, dolaylı bir tanım biçimidir ve değildir yüksek bütünlüklü bir derleyicide doğrudan uygulamaya uygun bir biçimde bir dili tanımlamak için çok kullanışlıdır Bu daha ziyade bizim amaçlarımız için daha soyuttur.
Aksiyomatik anlambilim Anlambilim derleyici yazmak için optimizasyon amacıyla program dönüşümleri örneğin anlamı tanımlama Yüksek Bütünlüklü Derleme - Bir vaka çalışması (1) - Derleme Örneği – Adım Adım Derleme Tezi – Bilimsel Derleme Nasıl Yapılır? - Bilimsel Derleme Yaptırma – Bilimsel Derleme Yaptırma Ücretleri
Son yorumlar