Mô hình bộ nhớ sử dụng trong kĩ thuật thực thi tượng trưng

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp phân tích mã nguồn và sinh dữ liệu kiểm thử cho các dự án c,c++ luận văn ths máy tính 604801 (Trang 30 - 32)

Mô hình bộ nhớ này có nhiều điểm tương tự với bộ nhớ máy tính. Trong các pha sau, SMT-Solver được sử dụng để giải những hệ ràng buộc này để tìm nghiệm thỏa mãn.

Trong nghiên cứu hiện tại, mô hình bộ nhớ mô phỏng được biến kiểu cơ bản (số nguyên, số thực, kí tự); con trỏ, mảng; biến kiểu dẫn xuất (biến class, struct). Ba thành phần trong mô hình bộ nhớ gồm bảng biến, bộ nhớ lô-gic và bộ nhớ vật lý.

Định nghĩa 3.5 (Bộ nhớ vật lý - Physical memory) Bộ nhớ vật lý của bảng biến được

định nghĩa PM = {cell0, cell1, …, cellk| k >= 0}, trong đó celli (0 <= i <= k) đại diện một giá trị kiểu biểu thức hoặc giá trị cụ thể (kiểu số, kiểu xâu, kiểu kí tự).

Định nghĩa 3.6 (Bộ nhớ lô-gic – Logical memory) Cho hàm fn và bộ nhớ vật lý tương ứng PM, bộ nhớ lô-gic được định nghĩa như sau: 𝐿𝑀 = {𝑙0, 𝑙1, … , 𝑙𝑛 |𝑛 ≥ 0, 𝑙𝑖 = {(𝑖𝑛𝑑𝑒𝑥𝑗,, 𝑟𝑒𝑓𝑗)|𝑗 ≥ 0, 𝑟𝑒𝑓𝑗 ∈ {𝐿𝑀 \ {𝑙𝑖}, 𝑃𝑀}}, trong đó 𝑙𝑖 đại diện một khối bộ nhớ lô-gic của mảng/con trỏ. 𝑖𝑛𝑑𝑒𝑥𝑗 đại diện chỉ số một phần tử lô-gic trong 𝑙𝑖. 𝑟𝑒𝑓𝑗 là giá trị một phần tử lô-gic trong 𝑙𝑖. 𝑟𝑒𝑓𝑗 trỏ đến một phần tử bộ nhớ (cell) trong bộ nhớ vật lý PM hoặc phần tử lô-gic khác trong bộ nhớ lô-gic LM.

Cụ thể, bộ nhớ lô-gic LM tương tự như khối bộ nhớ (block) trong RAM. Giả sử ta có biến con trỏ p2, thì p2 trỏ đến một khối bộ nhớ trong bộ nhớ lô-gic LM. Bởi vì số lượng các phần tử mà p2 trỏ đến không xác định, nên kích thước khối bộ nhớ trỏ đến này không phải giá trị cụ thể. Trường hợp thứ hai, với biến con trỏ kiểu mảng, kĩ thuật trỏ tương tự như đối với con trỏ. Trường hợp thứ ba, nếu biến kiểu cơ bản thì biến này được liên kết trực tiếp với bộ nhớ vật lý PM.

Định nghĩa 3.7 (Bảng biến – Table of variables) Cho hàm fn, bộ nhớ vật lý PM và bộ nhớ lô-gic tương ứng LM, bảng biến được định nghĩa 𝑇 = {𝑣𝑎𝑟0, 𝑣𝑎𝑟1, … , 𝑣𝑎𝑟𝑖, … , 𝑣𝑎𝑟𝑘 | 𝑘 ≥ 𝑖 ≥ 0, 𝑣𝑎𝑟𝑖 = (𝑛𝑖,, 𝑡𝑖, 𝑠𝑖, 𝑣𝑖 | 𝑠𝑖 ≥ 0, 𝑣𝑖 ∈

{𝐿𝑀, 𝑃𝑀})}, trong đó 𝑣𝑎𝑟𝑖 là tham số truyền vào hàm fn hoặc biến toàn cục. 𝑛𝑖 đại diện tên của biến lưu trong 𝑣𝑎𝑟𝑖,𝑡𝑖 đại diện kiểu biến (kiểu cơ bản, kiểu con trỏ, kiểu mảng, kiểu dẫn xuất). 𝑠𝑖 là phạm vi của biến (biến toàn cục, biến cục bộ). 𝒗𝒊 lưu tham chiếu của biến trỏ đến bộ nhớ vật lý PM hoặc bộ nhớ lô-gic LM.

Nói cách khác, bảng biến lưu tất cả các biến trong quá trình phân tích đường thi hành. Hai loại biến trong bảng biến gồm: biến truyền vào hàm (có thể là tham số, hoặc là biến ngoài như biến định nghĩa với từ khóa extern), và biến cục bộ trong hàm. Để phân biệt các loại biến này, mỗi một biến có một tham số tên scope. Giá trị scope càng lớn tức là tính cục bộ của biến đó càng cao. Giá trị scope bằng GLO tức là biến toàn cục.

Hình 3.5. Mô hình bộ nhớ sử dụng trong kĩ thuật thực thi tượng trưng.

Hình 3.5 trình bày mô hình bộ nhớ sử dụng trong phương pháp đề xuất. Bộ nhớ này mô phỏng trạng thái các biến của hàm test trong hình. Các tham số truyền vào hàm gồm biến mảng p1, biến con trỏ p2, biến kiểu cơ bản p3 và biến con trỏ kiểu dẫn xuất p4.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp phân tích mã nguồn và sinh dữ liệu kiểm thử cho các dự án c,c++ luận văn ths máy tính 604801 (Trang 30 - 32)

Tải bản đầy đủ (PDF)

(68 trang)