91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

探討一下基于符號(hào)抽象的程序分析

jf_glM2sZ6i ? 來(lái)源:編程語(yǔ)言Lab ? 2022-12-30 14:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

軟件已經(jīng)無(wú)處不在,軟件質(zhì)量問(wèn)題也越來(lái)越普遍,其造成的系統(tǒng)崩潰、安全漏洞等可能帶來(lái)經(jīng)濟(jì)上的損失,甚至威脅我們的生命。程序分析是保障軟件質(zhì)量的基礎(chǔ)技術(shù)和重要手段,已被廣泛應(yīng)用于提高軟件的可靠性、安全性、性能等多個(gè)維度的質(zhì)量。

今天,我們探討一類(lèi)特殊的程序分析方法,基于符號(hào)抽象的程序分析。首先我會(huì)簡(jiǎn)單回顧一下 抽象解釋 —— 靜態(tài)分析的核心理論。抽象解釋的核心問(wèn)題之一是,計(jì)算程序狀態(tài)在給定抽象域內(nèi)的最佳抽象。針對(duì)這個(gè)問(wèn)題,我會(huì)介紹符號(hào)抽象框架以及幾個(gè)和符號(hào)抽象有關(guān)的其他話題。

# 抽象解釋 #

抽象解釋是靜態(tài)分析的核心理論 [1],其關(guān)鍵想法是對(duì)程序的可達(dá)狀態(tài)做一個(gè)上近似。

如下圖,假設(shè)左邊的黃色橢圓代表程序的可達(dá)狀態(tài) Reachable States,右邊的黃色橢圓代表有缺陷的狀態(tài) Bad States。我們想驗(yàn)證這個(gè)程序是否有缺陷,即 Reachable States 是否可能和 Bad States 相交。

a5766db4-77bf-11ed-8abf-dac502259ad0.png

靜態(tài)分析可以對(duì)程序的可達(dá)狀態(tài)做推理,比如算出一個(gè)紅色區(qū)域。最終紅色區(qū)域可以完全覆蓋左邊的黃色區(qū)域,因此我們得到了一個(gè)上近似。而且我們看到左邊紅色區(qū)域和 Bad States 并不相交,因此我們成功地驗(yàn)證了這個(gè)程序是安全的。

# 1.1 抽象解釋的應(yīng)用

過(guò)去 20 多年來(lái),抽象解釋在工業(yè)界得到了很多應(yīng)用,以下三個(gè)可能是比較有代表性的。

第一個(gè)是 Astrée,基于數(shù)值域抽象解釋?zhuān)呀?jīng)成功用于驗(yàn)證航空航天等安全攸關(guān)場(chǎng)景的軟件。

第二個(gè)是 TVLA,主要做形態(tài)分析,比如驗(yàn)證垃圾回收算法是否真的回收了內(nèi)存垃圾。TVLA 把形態(tài)分析這個(gè)概念給發(fā)揚(yáng)光大了,啟發(fā)了很多后續(xù)工作,比如基于分離邏輯的形態(tài)分析。

第三個(gè)是 CodeSurfer/x86,它提出的 Value Set Analysis (VSA) 已經(jīng)成為了二進(jìn)制靜態(tài)分析框架的標(biāo)配。

a5897e04-77bf-11ed-8abf-dac502259ad0.png

此外,抽象解釋在學(xué)術(shù)領(lǐng)域也獲得多個(gè)榮譽(yù),包括 2013 年 SIGPLAN 的程序語(yǔ)言成就獎(jiǎng), 2018 年的約翰·馮諾依曼獎(jiǎng)等。

# 1.2 抽象域及其要素

抽象解釋會(huì)通過(guò)抽象域來(lái)對(duì)程序的狀態(tài)做數(shù)學(xué)近似,比如數(shù)值域、堆域、字符串域等。其中,數(shù)值域可以用來(lái)捕捉程序的數(shù)值信息,用于查找不同的程序缺陷,包括除零錯(cuò)誤、整數(shù)溢出等。

a5c1dbe6-77bf-11ed-8abf-dac502259ad0.png

a5d2ccee-77bf-11ed-8abf-dac502259ad0.png

由于抽象解釋是對(duì)程序的可達(dá)狀態(tài)做上近似,它往往伴隨著一些精度問(wèn)題。比如我們?cè)俅慰催@個(gè)圖,右邊的黃色區(qū) Bad States 和紅色區(qū)域 (靜態(tài)分析的結(jié)果) 是相交的,但事實(shí)上 Bad States 和左邊的黃色區(qū)域 Reachable States 并不相交,因此我們的靜態(tài)分析存在誤報(bào)。

a5e4635a-77bf-11ed-8abf-dac502259ad0.png

# 1.3 最佳抽象

給定一個(gè)抽象域比如區(qū)間域,怎么計(jì)算程序在該抽象域上的、最精確的上近似呢?事實(shí)上,這也是抽象解釋理論的一個(gè)核心問(wèn)題:給定一個(gè)具體遷移函數(shù) 以及抽象域 ,如何得到 在 上的最佳抽象 (最精確的抽象遷移函數(shù))?

抽象解釋理論對(duì) 有一個(gè)聲明式的定義,但是這個(gè)定義是“非構(gòu)造性”的。通常我們沒(méi)有自動(dòng)化的算法,去應(yīng)用最佳抽象遷移函數(shù) ,或者去得到 的一個(gè)表示。

最佳抽象的形式化定義:

a5f9f9fe-77bf-11ed-8abf-dac502259ad0.png

# 符號(hào)抽象框架 #

為了解決以上問(wèn)題,研究人員提出了符號(hào)抽象框架

# 2.1 框架定義和實(shí)例

假設(shè)我們用邏輯約束φ來(lái)編碼一個(gè)程序的具體狀態(tài),并且把抽象域看作一個(gè)比較受限的邏輯片段 (比如“區(qū)間邏輯”)。符號(hào)抽象的目標(biāo)就是找到約束φ 在抽象域上的、最精確的上近似[2]。

a625c764-77bf-11ed-8abf-dac502259ad0.png

我們也可以從邏輯的角度來(lái)理解 [3]。給定一個(gè)約束φ和一個(gè)邏輯片段(對(duì)應(yīng)于抽象域), 找到約束φ在中的最強(qiáng)邏輯后承 (strongest logical consequence)。

a6525978-77bf-11ed-8abf-dac502259ad0.png

下面是一個(gè)具體的例子:

考慮約束 φ,其中是整數(shù)變量。這個(gè)約束有四個(gè)可行解。我們可以一眼看出,約束φ在區(qū)間域的最佳近似是。但是,在一般情況下,我們應(yīng)如何計(jì)算出一個(gè)約束的最佳區(qū)間近似呢?這就是符號(hào)抽象需要解決的問(wèn)題。

a67935fc-77bf-11ed-8abf-dac502259ad0.png

# 2.2 框架意義和應(yīng)用

通常,為了實(shí)現(xiàn)一個(gè)靜態(tài)分析器,我們需要建模不同的程序指令 (比如加減乘除),為其設(shè)計(jì)不同的抽象遷移函數(shù)、并將這些遷移函數(shù)組合起來(lái)。而使用符號(hào)抽象框架后,我們就可以用一個(gè)約束來(lái)精確編碼一整塊代碼,并且自動(dòng)得到對(duì)于該代碼的最精確近似。

a68eb5f8-77bf-11ed-8abf-dac502259ad0.png

符號(hào)抽象的理論和實(shí)際意義

然而,由于符號(hào)抽象的性能問(wèn)題,目前在真實(shí)的靜態(tài)分析器中很少得到應(yīng)用。當(dāng)前的少量應(yīng)用主要包括兩塊。

一是上層源代碼的驗(yàn)證分析,包括數(shù)值屬性、堆屬性等的驗(yàn)證。對(duì)于數(shù)值驗(yàn)證,國(guó)防科大的陳立前教授就有相關(guān)工作 [4]。目前這些工作主要面向一些相對(duì)小規(guī)模的程序驗(yàn)證。

a6a8080a-77bf-11ed-8abf-dac502259ad0.png

其次是二進(jìn)制分析,比如做控制流恢復(fù) control flow recovery 等。在歐洲有幾個(gè)團(tuán)隊(duì)一直有做相關(guān)的工作,GrammaTech 甚至已經(jīng)將符號(hào)抽象用到二進(jìn)制分析產(chǎn)品中。

a6c0d3c6-77bf-11ed-8abf-dac502259ad0.png

但即便有工業(yè)級(jí)應(yīng)用,符號(hào)抽象在形式化、編程語(yǔ)言、甚至抽象解釋社區(qū)也都還不夠普及。

# 延伸思考 #

下面分享一些引申思考。回到符號(hào)抽象的定義: 是表達(dá)力豐富的邏輯,抽象域 對(duì)應(yīng)于 一個(gè)子集 。給定 ,找到它在 的最強(qiáng)邏輯后承。

其實(shí)計(jì)算機(jī)科學(xué)中的很多問(wèn)題都跟這個(gè)問(wèn)題相關(guān),下面我們舉幾個(gè)例子。

第一個(gè)是謂詞抽象 predicate abstraction [5],它可以看作符號(hào)抽象的一個(gè)特殊實(shí)例。假設(shè)我們有一些謂詞集合

謂詞抽象的抽象域 就是 中命題的任意布爾組合,比如 。在用于程序驗(yàn)證時(shí),結(jié)合一些不動(dòng)點(diǎn)迭代方式,我們還能算出 能表達(dá)的最強(qiáng)循環(huán)不變式。

a6dd62de-77bf-11ed-8abf-dac502259ad0.png

第二個(gè)是量詞消去 quantifier elimination。給定,假設(shè)抽象域是只使用特定約束變量集合的約束。那么,存在量詞消去existential quantifier elimination 的目標(biāo)就是計(jì)算在中的最強(qiáng)邏輯后承。

a70bf8f6-77bf-11ed-8abf-dac502259ad0.png

第三個(gè)是人工智能里面的 Forgetting 問(wèn)題 [6],和量詞消去問(wèn)題類(lèi)似。這是港科大 Fangzhen Lin 教授發(fā)明的概念,在邏輯 AI 領(lǐng)域很有名。

第四個(gè)是 線性規(guī)劃 問(wèn)題,它也可以看作符號(hào)抽象問(wèn)題的一個(gè)實(shí)例。 即線性約束集合, (其中, 是線性目標(biāo)函數(shù))。

個(gè)人認(rèn)為符號(hào)抽象問(wèn)題有超越靜態(tài)分析、編程語(yǔ)言,甚至超越計(jì)算機(jī)科學(xué)領(lǐng)域的意義,具有深遠(yuǎn)的理論蘊(yùn)含。而且針對(duì)相關(guān)問(wèn)題的算法也有一些共通性,比如基于模型的泛化等。

# 總結(jié)與展望 #

最后,我們一起從 程序合成 的視角來(lái)理解符號(hào)抽象 (程序合成是指如何自動(dòng)從規(guī)約中生成程序)。那么,回顧今天的主題,我們的規(guī)約是什么?我們應(yīng)如何從這個(gè)規(guī)約中生成靜態(tài)分析器呢?

a73f05de-77bf-11ed-8abf-dac502259ad0.png

a74ffd62-77bf-11ed-8abf-dac502259ad0.png




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • VSA
    VSA
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    10977
  • 分析器
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    12727

原文標(biāo)題:基于符號(hào)抽象的程序分析

文章出處:【微信號(hào):編程語(yǔ)言Lab,微信公眾號(hào):編程語(yǔ)言Lab】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)教一下這個(gè)符號(hào)是什么

    請(qǐng)教一下這個(gè)符號(hào)是什么呀?由于很少使用這個(gè)符號(hào),同時(shí)在multisim12的庫(kù)中沒(méi)有找到這個(gè)元件。
    發(fā)表于 06-13 12:37

    探討一下,CRC校驗(yàn)的優(yōu)勢(shì)

    本帖最后由 ntmusic 于 2014-6-11 11:31 編輯 探討一下,使用計(jì)算的2字節(jié)的CRC校驗(yàn)碼和使用固定的2字節(jié)數(shù)據(jù)作為校驗(yàn)在保證數(shù)據(jù)傳輸正確方面有什么不同?
    發(fā)表于 06-11 11:21

    電器符號(hào)誰(shuí)幫我解釋一下

    本帖最后由 yangkel2013 于 2015-1-9 12:51 編輯 我這邊有本電路圖,是英國(guó)進(jìn)口的拌合站的電器圖,有些電氣符號(hào)不明白,誰(shuí)能幫我解釋說(shuō)明一下,先汗顏一下,我是新手FAR
    發(fā)表于 01-09 12:32

    麻煩大佬看一下電路模塊的符號(hào)代表什么?

    小白想請(qǐng)大佬看一下電路模塊的符號(hào)代表什么?
    發(fā)表于 06-22 07:06

    菜鳥(niǎo)想問(wèn)一下怎么用個(gè)模型生成個(gè)器件符號(hào)啊?

    想問(wèn)一下怎么用個(gè)模型生成個(gè)器件符號(hào)啊?
    發(fā)表于 06-25 06:58

    探討一下深度學(xué)習(xí)在嵌入式設(shè)備上的應(yīng)用

    下面來(lái)探討一下深度學(xué)習(xí)在嵌入式設(shè)備上的應(yīng)用,具體如下:1、深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,包含多個(gè)隱層的多層感知器(MLP) 是種原始的深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過(guò)組合低層特征形成更加
    發(fā)表于 10-27 08:02

    分析探討

    分析探討 首先提一下分析的概念哈,我們可以用各種手段完成,包括仿真軟件,手算,實(shí)際測(cè)試等等,器件發(fā)熱會(huì)導(dǎo)致很多問(wèn)題:1.半導(dǎo)體
    發(fā)表于 11-21 14:07 ?861次閱讀

    按鈕控制LED程序(按亮再按一下滅)【匯編版】

    按鈕控制LED程序(按亮再按一下滅)【匯編版】按鈕控制LED程序(按亮再按一下滅)【匯編版】
    發(fā)表于 12-29 11:04 ?0次下載

    分析java接口和抽象類(lèi)區(qū)別

    抽象類(lèi) 二。接口 三。抽象類(lèi)和接口的區(qū)別 抽象類(lèi) 在了解抽象類(lèi)之前,先來(lái)了解
    發(fā)表于 09-27 16:40 ?0次下載

    通過(guò)抽象程序證明復(fù)雜具體程序

    描述了證明抽象程序和具體程序滿足致性關(guān)系的方法.抽象程序使用
    發(fā)表于 12-29 16:17 ?0次下載
    通過(guò)<b class='flag-5'>抽象</b><b class='flag-5'>程序</b>證明復(fù)雜具體<b class='flag-5'>程序</b>

    電動(dòng)車(chē)的核心動(dòng)力來(lái)源電池的成本大家起來(lái)探討一下

    這幾年在全球汽車(chē)圈電動(dòng)車(chē)著實(shí)已經(jīng)火了很長(zhǎng)時(shí)間。作為電動(dòng)車(chē)的核心動(dòng)力來(lái)源電池也是大家經(jīng)常討論的個(gè)話題,但這個(gè)核心部件的成本分析卻不多見(jiàn),希望本文能夠拋磚引玉,吸引大家起來(lái)探討
    的頭像 發(fā)表于 07-08 16:23 ?6085次閱讀

    電磁爐加熱一下就停一下什么原因

    電磁爐加熱一下就停一下什么原因。
    的頭像 發(fā)表于 06-04 10:01 ?4w次閱讀

    詳細(xì)分析Verilog編寫(xiě)程序測(cè)試無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的乘法

    符號(hào)數(shù)的計(jì)算在 Verilog 中是個(gè)很重要的問(wèn)題(也很容易會(huì)被忽視),在使用 Verilog 語(yǔ)言編寫(xiě) FIR 濾波器時(shí),需要涉及到有符號(hào)數(shù)的加法和乘法,在之前的程序中我把所有的
    的頭像 發(fā)表于 05-02 10:48 ?8051次閱讀
    詳細(xì)<b class='flag-5'>分析</b>Verilog編寫(xiě)<b class='flag-5'>程序</b>測(cè)試無(wú)<b class='flag-5'>符號(hào)</b>數(shù)和有<b class='flag-5'>符號(hào)</b>數(shù)的乘法

    芯片設(shè)計(jì)抽象層及其設(shè)計(jì)風(fēng)格

    在了解Verilog語(yǔ)言的更多細(xì)節(jié)之前,我們最好先了解一下芯片設(shè)計(jì)中的不同抽象層。
    發(fā)表于 11-05 15:51 ?12次下載
    芯片設(shè)計(jì)<b class='flag-5'>抽象</b>層及其設(shè)計(jì)風(fēng)格

    分析一下SR鎖存器的原理

    作為電路設(shè)計(jì)者,鎖存器很多場(chǎng)合都會(huì)用到,今天和大家分析一下SR鎖存器的原理。
    的頭像 發(fā)表于 08-20 17:30 ?7452次閱讀
    <b class='flag-5'>分析</b><b class='flag-5'>一下</b>SR鎖存器的原理
    主站蜘蛛池模板: 日本一级成人毛片免费观看 | 亚洲综合五月天欧美 | 好看的一级毛片 | 天天拍拍天天爽免费视频 | 国产成+人+综合+亚洲欧美丁香花 | 激情丁香婷婷 | 高清不卡一区二区三区 | 广东毛片| 国片一级 免费看 | 日本内谢69xxxx免费 | 日本一区二区三区不卡在线视频 | 老熟女一级毛片 | 免费爱爱网 | 女的扒开尿口让男人桶 | 亚洲精品综合网在线8050影院 | 啪啪调教所29下拉式免费阅读 | 色婷婷综合和线在线 | 色西西 | 久久奇米| 婷婷激情六月 | 丁香五香天堂网 | 天天操天天干天天拍 | 日韩免费无砖专区2020狼 | 午夜在线免费观看视频 | 精品精品国产高清a毛片牛牛 | 国产美女精品一区二区三区 | 精品黄色录像 | 国产成人经典三级在线观看 | 97影院理伦在线观看 | 天天搞天天干 | 怡红院日本一道日本久久 | 欧美色视频超清在线观看 | 天堂bt资源新版在线 | 日韩a级毛片| 女同在线视频 | 免费看三级黄色片 | 亚洲国产精品久久精品怡红院 | 久久好色 | 成人免费视频一区 | 日韩三级中文 | 欧美激情片网站 |