两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

指針分析方法及裝置的制造方法

文檔序號:8339504閱讀:368來源:國知局
指針分析方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實施例涉及計算機技術(shù),尤其涉及一種指針分析方法及裝置。
【背景技術(shù)】
[0002] 隨著計算機的普及,計算機軟件越來越復(fù)雜,其中使用的程序語句類型也更加靈 活和豐富,以通常使用的C和C++程序語句為例進(jìn)行說明,程序語句中指針的使用愈加廣 泛。指針語句的使用是決定程序被編譯優(yōu)化后運行性能優(yōu)良的重要因素,因此,對于程序的 編譯優(yōu)化基于對程序語句中指針的分析。
[0003] 對指針的分析一般指對該指針變量性質(zhì)和指向集的分析。目前,在進(jìn)行指針分析 時,通常使用精度較高的流敏感上下文敏感(Flow-Sensitive and Context-Sensitive,簡 稱為:FSCS)的分析方法,但直接使用該類方法不適用于多線程程序。一種直觀的針對多線 程程序的指針分析,可以通過對全局變量進(jìn)行指針分析獲取全局共享量對程序的并行區(qū)域 內(nèi)不同線程間的交互影響;具體地,分析全局共享量在各程序點的指針指向集、線程間交互 指向集和當(dāng)前程序語句執(zhí)行結(jié)束后在指向圖中新增的指向邊。
[0004] 現(xiàn)有技術(shù)中對多線程程序的語句進(jìn)行的指針分析方法,只考慮到全局共享量對程 序的并行區(qū)域內(nèi)線程間的交互影響,因此,進(jìn)行指針分析的共享量僅局限于程序中的全局 共享量,使得指針分析的對象,即程序中的共享量范圍縮小,降低了指針分析的精度。

【發(fā)明內(nèi)容】

[0005] 本發(fā)明實施例提供一種指針分析方法及裝置,以解決現(xiàn)有技術(shù)中對多線程程序的 指針分析僅局限于程序中的全局共享量,分析結(jié)果不全面的問題。
[0006] 第一方面,本發(fā)明實施例提供一種指針分析方法,包括:
[0007] 讀取待分析的多線程程序中的語句信息;
[0008] 根據(jù)所述程序的語句信息對所述程序進(jìn)行指針分析,獲得所述程序的共享信息, 所述共享信息包括共享量、指針指向集和訪存行為,其中,共享量包括全局共享量和局部共 享量;
[0009] 根據(jù)所述程序的共享信息對所述共享量進(jìn)行補償分析。
[0010] 在第一方面的第一種可能實現(xiàn)方式中,所述根據(jù)所述程序的語句信息對所述程序 進(jìn)行指針分析,獲得所述程序的共享信息,包括:
[0011] 根據(jù)全局共享判斷規(guī)則對所述程序進(jìn)行分析,獲得所述程序中的全局共享量;
[0012] 對所述程序中每個線程進(jìn)行指針分析,獲得每個線程中的指針指向集、局部共享 量和與所述共享量對應(yīng)的訪存行為。
[0013] 根據(jù)第一方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述全局 共享判斷規(guī)則包括:
[0014] 若變量可以被程序中至少兩個線程同時訪問,則所述變量為全局共享量。
[0015] 根據(jù)第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中, 所述對所述程序中每個線程進(jìn)行指針分析,獲得每個線程中的指針指向集、局部共享量和 與所述共享量對應(yīng)的訪存行為,包括:
[0016] 對所述程序中每個線程進(jìn)行指針分析,獲得每個線程中的指針指向集;
[0017] 根據(jù)所述全局共享量、所述指針指向集和局部共享判斷規(guī)則對每個線程進(jìn)行分 析,獲得每個線程中的局部共享量;
[0018] 根據(jù)所述全局共享量、所述局部共享量和所述指針指向集對每個線程進(jìn)行分析, 獲得與所述共享量對應(yīng)的訪存行為。
[0019] 根據(jù)第一方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述局部 共享判斷規(guī)則包括:
[0020] 若給定線程中變量可以作為所述程序中某個線程的入口參數(shù)而被其他線程訪問, 則所述變量為局部共享量;或者,
[0021] 若給定線程中變量可以通過被全局共享量間接引用的方式而被其他線程訪問,則 所述變量為局部共享量;或者,
[0022] 若給定線程中變量可以通過全局共享量的賦值,使得所述變量的指向集包含所述 全局共享量,則所述變量為局部共享量。
[0023] 根據(jù)第一方面的第三種或第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中, 所述根據(jù)所述全局共享量、所述指針指向集和局部共享判斷規(guī)則對每個線程進(jìn)行分析,獲 得每個線程中的局部共享量,包括:
[0024] 根據(jù)所述全局共享量、所述指針指向集和局部共享識別規(guī)則,獲取每個線程中可 能逃逸的局部變量;
[0025] 根據(jù)所述可能逃逸的局部變量和共享傳播規(guī)則,確定從所述可能逃逸的局部變量 中獲取的可能被其他線程使用的局部變量為局部共享量。
[0026] 根據(jù)第一方面、第一方面的第一種到第五種可能的實現(xiàn)方式中任一種,在第六種 可能的實現(xiàn)方式中,所述根據(jù)所述程序的共享信息對每個共享量分別進(jìn)行補償分析之前, 還包括:
[0027] 根據(jù)所述程序的語句信息生成并行控制流圖;
[0028] 根據(jù)所述并行控制流圖和所述共享信息生成針對所述程序的共享量訪存圖SAG ;
[0029] 所述根據(jù)所述程序的共享信息對所述共享量進(jìn)行補償分析,包括:
[0030] 根據(jù)所述SAG對所述共享量進(jìn)行補償分析。
[0031] 根據(jù)第一方面、第一方面的第一種到第六種可能的實現(xiàn)方式中任一種,在第七種 可能的實現(xiàn)方式中,所述共享量具有相應(yīng)的定值點和引用點對;所述根據(jù)所述程序的共享 信息對所述共享量進(jìn)行補償分析,包括:
[0032] 根據(jù)傳播判斷規(guī)則獲得所述定值點和引用點對之間可以相互影響的共享量;
[0033] 將所述定值點和引用點對之間可以相互影響的共享量的所述定值點的指針指向 集傳播到對應(yīng)的引用點。
[0034] 根據(jù)第一方面、第一方面的第一種到第七種可能的實現(xiàn)方式中任一種,在第八種 可能的實現(xiàn)方式中,所述讀取待分析的多線程程序中的語句信息之前,還包括:
[0035] 接收用戶發(fā)送的指針分析指令;
[0036] 所述讀取待分析的多線程程序中的語句信息,包括:
[0037] 根據(jù)所述指針分析指令讀取所述待分析的多線程程序中的語句信息。
[0038] 根據(jù)第一方面、第一方面的第一種到第八種可能的實現(xiàn)方式中任一種,在第九種 可能的實現(xiàn)方式中,所述根據(jù)所述程序的共享信息對所述共享量進(jìn)行補償分析之后,還包 括:
[0039] 采用所述補償分析的結(jié)果,對所述程序進(jìn)行優(yōu)化處理。
[0040] 第二方面,本發(fā)明實施例提供一種指針分析裝置,包括:
[0041] 讀取模塊,用于讀取待分析的多線程程序中的語句信息;
[0042] 指針分析模塊,用于根據(jù)所述讀取模塊讀取的所述程序的語句信息對所述程序進(jìn) 行指針分析,獲得所述程序的共享信息,所述共享信息包括共享量、指針指向集和訪存行 為,其中,共享量包括全局共享量和局部共享量;
[0043] 補償分析模塊,用于根據(jù)所述指針分析模塊獲得的所述程序的共享信息對所述共 享量進(jìn)行補償分析。
[0044] 在第二方面的第一種可能實現(xiàn)方式中,所述指針分析模塊,包括:
[0045] 程序分析單元,用于根據(jù)全局共享判斷規(guī)則對所述程序進(jìn)行分析,獲得所述程序 中的全局共享量;
[0046] 線程分析單元,用于對所述程序中每個線程進(jìn)行指針分析,獲得每個線程中的指 針指向集、局部共享量和與所述共享量對應(yīng)的訪存行為。
[0047] 根據(jù)第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述全局 共享判斷規(guī)則包括:
[0048] 若變量可以被程序中至少兩個線程同時訪
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
璧山县| 瑞丽市| 手游| 玉门市| 交城县| 福清市| 宜宾市| 南充市| 宜兰市| 绵竹市| 巴里| 雷山县| 鸡西市| 安庆市| 左云县| 黑龙江省| 营口市| 永定县| 合阳县| 三台县| 巩留县| 石河子市| SHOW| 原平市| 海伦市| 新营市| 德化县| 泸州市| 保德县| 上蔡县| 光山县| 灵石县| 沂源县| 太白县| 荆州市| 莱芜市| 兰西县| 高密市| 黄山市| 万宁市| 分宜县|