Program skärning identifierar programdelar som kan påverka vissa egenskaper hos programmet, såsom resultaten av tillstånd som påverkar programflödet. Ottensteins Program Dependence Graph (PDG)-baserade algoritm är den state-of-practice för statisk skivning idag: den är väl lämpad i applikationer där många skivor beräknas, eftersom kostnaden för att bygga PDG då kan amorteras över skivorna. Men det finns program som kräver få skivor av ett givet program, och där beräkning av alla beroenden kan vara onödigt. Vi presenterar en lätt interprocedural algoritm för bakåt statisk skivning där databeroende analys görs med hjälp av en variant av Starkt Live Variables (SLV) analys. Detta gör att vi kan undvika att bygga Data Dependence Graph, och att skiva programuttalanden "on-the-fly" under SLV-analysen som är potentiellt snabbare för att beräkna några skivor. Dessutom använder vi en abstrakt tolkningsbaserad värdeanalys för att utöka vår skärande algoritm till att dela in lågnivåkod, där databeroenden inte syns på grund av dynamiskt beräknade adresser. Vår algoritm beräknar skivor som uppsättningar av Control Flow Graph noder: vi visar hur man anpassar befintliga tekniker för att generera körbara skivor som motsvarar semantiskt korrekt kod, där hopp uttalanden har införts på lämpliga platser. Vi har implementerat våra slicingalgoritmer och gjort en experimentell utvärdering som jämför dem med den standardbaserade PDG-baserade algoritmen för ett antal exempelprogram. Vi får samma noggrannhet som för PDG-baserad skivning, ibland med betydande förbättringar i prestanda.
År 2015, Lisper et al. REF presenterade en lätt interprocedural algoritm för backwark statisk skivning baserad på en variant av SLV-analysen (starkt levande variabler), som är en alternativ dataflödesanalys för databeroenden.
Static Backward Demand-Driven Slicing
{'venue': "PEPM '15", 'journal': None, 'mag_field_of_study': ['Computer Science']}