Phân tíh và huyển đổi mã nguồn cc++ từ hệ điều hành windows 32 bit sang hệ điều hành windows 64bit

69 7 0
Phân tíh và huyển đổi mã nguồn cc++ từ hệ điều hành windows 32 bit sang hệ điều hành windows 64bit

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

58 Trang 7 THUẬT NGỮ TIẾNG ANH32- bit Hệ điều hành 32 bit 64 - bit Hệ điều hành 64 bit Register Thanh ghi ALU Arithmetic logic unit - bộ xử lý tính toán Function driven Lập trình hướng

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - ĐỒN QUANG TRUNG Phân tích chuyển đổi mã nguồn C/C++ từ hệ điều hành Windows 32 bit sang hệ điều hành Windows 64 bit CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN MÃ SỐ HỌC VIÊN: CB150299 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC TS BAN HÀ BẰNG HN - 2018 Tai ngay!!! Ban co the xoa dong chu nay!!! 17057205209571000000 LỜI CAM ĐOAN Tôi xin cam đoan luận văn công trình nghiên cứu riêng cá nhân tơi, khơng chép tự nghiên cứu, đọc, dịch tài liệu, tổng hợp thực Nội dung lý thuyết trong luận văn tơi có sử dụng số tài liệu tham khảo trình bày phần tài liệu tham khảo Các số liệu, chương trình phần mềm kết luận văn trung thực chưa công bố cơng trình khác HN ngày 20, tháng 09 năm 2018 Học viên thực Đoàn Quang Trung LỜI CẢM ƠN Trước trình bày nội dung luận văn, em xin bày tỏ lòng biết ơn sâu sắc tới TS Ban Hà Bằng người tận tình bảo, hướng dẫn giúp đỡ em suốt q trình hồn thành luận văn Em xin chân thành cảm ơn tập thể cán Khoa Công Nghệ Thông Tin, Viện Đào Tạo Sau Đại học, Trường Đại học Bách khoa Hà Nội, tạo điều kiện thuận lợi cho em trình học tập nghiên cứu Nhân dịp em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè bên em cổ vũ, động viên, giúp đỡ em suốt trình học tập thực luận văn Xin chân thành cảm ơn! Hà Nội, ngày 20 tháng 09 năm 2018 Học viên Đoàn Quang Trung MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN CÁC HÌNH VẼ, BẢNG BIỂU TRONG LUẬN VĂN THUẬT NGỮ TIẾNG ANH MỞ ĐẦU Chương 1: Tổng quan hệ điều hành 32bit 64bit 1.1.Các khái niệm x86, x86-64, IA-64, 32bit 64 bit 1.2.Hoạt động CPU 1.3.Vai trò 32-bit hay 64bit kiến trúc CPU .3 1.4.Lợi ích hạn chế vi xử lý 64-bit so với 32-bit 1.4.1.Lợi ích 1.4.2.Nhược điểm Chương 2: Ngơn ngữ lập trình C/C++ vấn đề phát sinh dịch chuyển ứng dụng tảng 32bit lên 64 bit 2.1.Ngơn ngữ lập trình C C++ 2.1.1.Ngơn ngữ lập trình C 2.1.2.Ngơn ngữ lập trình C++ .7 2.1.3.Sự khác C C++ 2.2.Đa luồng (Multithread) C++ .9 2.2.1.Khái niệm đa luồng 2.2.2.Đa luồng C++ .9 2.3.Các phương pháp có phát bẫy lỗi chuyển mã code C C ++ sang Windows 64 bit 10 2.3.1.Review code .11 2.3.2.Phân tích code tĩnh .11 2.3.3.Phân tích code động 12 2.3.4.Phương pháp hộp trắng 12 2.3.5.Phương pháp hộp đen .13 2.3.6.Phương pháp kiểm thử thủ công 13 2.4.Nguyên nhân phương pháp chi tiết .14 2.4.1.Tắt cảnh báo (Disabled warnings) .14 2.4.2.Sử dụng hàm với số lượng đối số thay đổi 14 2.4.3.Số ma thuật .15 2.4.4.Lưu trữ số nguyên kiểu double 17 2.4.5.Phép toán dịch bit .18 2.4.6.Lưu trữ giá trị trỏ 19 2.4.7.Memsize kiểu union 21 2.4.8.Thay đổi kiểu mảng 23 2.4.9.Hàm ảo với đối số kiểu memsize .24 2.4.10.Quá trình serialization (tuần tự) trao đổi liệu 26 2.4.11.Trường bit 28 2.4.12.Gợi ý phép tính địa .31 2.4.13.Chuỗi số .34 2.4.14 Sự pha trộn việc sử dụng kiểu số nguyên đơn giản kiểu memsize 36 2.4.15 Sự chuyển đổi Kiểu ẩn dùng hàm 39 2.4.16 Vấn đề nạp chồng hàm 40 2.4.17 Căn chỉnh liệu 42 2.4.18 Các ngoại lệ .45 2.4.19 Sử dụng hàm lỗi thời & số định nghĩa trước .46 2.4.20 Ép kiểu tường minh 46 Chương 3: Thực nghiệm 47 3.1.Xây dựng công cụ 47 3.1.1.Đề xuất giải pháp chuyển đổi mã nguồn c/c++ từ hệ điều hành 32 bit sang 64 bit 47 3.1.2.Giao diện chương trình 49 3.2.Ví dụ thực nghiệm khắc phục cảnh báo C4996 .51 3.2.1.Nguyên nhân dẫn đến cảnh báo C4996 51 3.2.2.Các thể cụ thể .52 3.2.3.Các cách giải vấn đề .52 3.3.Kết thực nghiệm 53 KẾT LUẬN 60 Tài liệu tham khảo 62 CÁC HÌNH VẼ, BẢNG BIỂU TRONG LUẬN VĂN Hình 2.1 Lưu trữ số nguyên kiểu double 18 Hình 2.2 Tính tốn giá trị Mask 19 Hình 2.3 Thay đổi kiểu mảng 24 Hình 2.4 Thứ tự xếp byte hệ điều hành 64-bit kết thúc lớn kết thúc nhỏ 29 Hình 2.5 Tính tốn biểu thức hệ điều hành khác 31 Hình 2.6 Sự thay đổi diễn biểu thức 40 Hình 3.1 Lưu đồ thuật toán 49 Hình 3.2 Màn hình 50 Hình 3.3 Màn hình sau hồn thành 52 Hình 3.4 Danh sách cảnh báo xử lý 58 Bảng 1.1 Dung lượng RAM tối đa số hệ điều hành hỗ trợ Bảng 2.1 So sánh khác C C++ Bảng 2.2 B2 chứa số ma thuật ảnh hưởng đến tính khả thi ứng dụng tảng 16 Bảng 2.3 B4: Biểu thức dịch bit kết hệ thống 64bit 19 Bảng 3.1 Kết thực nghiệm 59 THUẬT NGỮ TIẾNG ANH 32- bit Hệ điều hành 32 bit 64 - bit Hệ điều hành 64 bit Register Thanh ghi ALU Arithmetic logic unit - xử lý tính tốn Function driven Lập trình hướng chức Object driven Lập trình hướng đối tượng MỞ ĐẦU Ngày nay, hầu hết ứng dụng chạy thông tảng hệ điều hành Windows 32 bit Windows NT, Windows 2000, Windows XP với phần mềm viết mã nguồn dựa Visual Studio hãng Microsoft Tuy nhiên, chuyển đổi sang hệ điều hành Windows 64 bit Windows 10 gặp vấn đề tương thích mã nguồn Lý mã nguồn viết cho ứng dụng tảng hệ điều hành Windows 32 bit có đơn vị xử lý 32 bit trình dịch Visual Studio hệ điều hành Windows 64 bit đơn vị xứ lý lại 64 bit Các lỗi cảnh báo (Warning) lỗi phân tích ngữ nghĩa (semantic analyzer) giải thích cách xử lý khác trình dịch đối tượng (biến, hằng, hàm, tên gọi…) mã nguồn viết hệ điều hành 64 bit so với 32 bit Mục tiêu đề tài sử dụng cơng cụ trình dịch có để tự động phân tích sinh mã nguồn C/C++ cho hệ điều hành Windows 64 bit từ mã nguồn C/C++ có vốn viết cho hệ điều hành Windows 32 bit, cho giảm thiểu số lỗi cảnh báo Nhận thấy tầm quan trọng việc sinh mã tự động để giảm hiểu công sức thời gian lập trình viên, em tìm hiểu với hướng dẫn tận tình, giúp đỡ TS Ban Hà Bằng em chọn đề tài "Phân tích chuyển đổi mã nguồn C/C++ từ hệ điều hành Windows 32 bit sang hệ điều hành Windows 64 bit" Bố cục luận văn gồm chương sau: • Chương 1: Tổng quan hệ điều hành 32bit 64bit • Chương 2: Những vấn đề phát sinh dịch chuyển ứng dụng tảng 32-bit lên 64-bit • Chương 3: Cơ sở lý thuyết ứng dụng CHƯƠNG TỔNG QUAN VỀ HỆ ĐIỀU HÀNH 32BIT VÀ 64BIT Mục đích chương giới thiệu khác biệt hệ điều hành 32bit 64bit ưu nhược điểm chúng 1.1 Các khái niệm x86, x86-64, IA-64, 32bit 64 bit - x86: Đây tên tập lệnh dẫn Intel AMD phát triển Nó xây dựng dựa vi xử lí Intel 8086, chip mắt năm 1978 Lý có chữ "x86" model kế nhiệm cho 8086 đặt tên có "86" Trước x86 hỗ trợ điện toán 16-bit, 32-bit - x86-64: cịn có tên khác x64, x86_64 amd64 Đây tên dùng để phiên 64-bit tập dẫn x86 Cấu hình x86-64 ban đầu tạo AMD Lúc mắt, AMD gọi x86-64 AMD64, Intel gọi tên IA-32e EMT64 Cách gọi tập dẫn khác với hãng phần mềm, Apple gọi x86_64, Sun Microsystem (giờ thuộc Oracle) Microsoft gọi x64, nhiều distro Linux lại dùng chữ AMD64 AMD K8 vi xử lí giới sử dụng x86-64 - IA-64: kiến trúc sử dụng dòng vi xử Intel Itanium, chủ yếu xuất máy chủ doanh nghiệp hệ thống tính tốn hiệu cao dùng máy tính cá nhân IA-64 hồn tồn khác biệt khơng tương thích với lệnh tập lệnh x86 hay x86-64 - 32-bit 64-bit: Hai số dùng để độ dài ghi (register) CPU loại hình điện tốn tập kiến trúc lệnh ba thứ Người ta dùng khái niệm 32-bit 64-bit để CPU phần mềm 1.2 Hoạt động CPU CPU gồm nhiều phận, nghiên cứu miêu tả hoạt động qua thành phần chính: ALU (Arithmetic logic unit - xử lý tính tốn) registers (thanh ghi) Register, ALU, số linh kiện khác hợp thành nhân CPU - ALU thực phép tốn thơng thường cộng trừ, nhân, chia; ngồi cịn chạy phép logic so sánh 'hoặc', 'và' - Register loại nhớ tích hợp thẳng vào CPU có tốc độ hoạt động gần sát với CPU Dung lượng register thường nhỏ Những CPU 32-bit có ALU register với độ rộng 32-bit, cịn CPU 64-bit có độ rộng thành phần 64-bit 1.3 Vai trò 32-bit hay 64bit kiến trúc CPU - Đó độ dài register đồng thời độ dài địa mà CPU sử dụng + Độ dài ghi lớn đem lại kết tính tốn cao Ví dụ: Để thực phép tính 12+34 CPU có ghi độ dài 1, ALU phải thực phép tính: 1+3 2+4, sau nối kết lại với Nếu CPU có độ dài thực phép tính 12+34 cho kết lập tức, khơng phải tính bước + Độ dài địa lớn khả lưu trữ cang cao Với kiến trúc 32bit ta có 232 = 4294967296 số địa (khoảng 4,29 tỉ địa chỉ) tương ứng với dung lượng 4GB Trong trường hợp này, có nhiều 4GB RAM phần nhiều khơng có địa chỉ, CPU khơng cách "liên lạc" đến chúng Do nhu cầu sử dụng nhớ ngày lớn nên cần đến kiến trúc 64bit Khi số địa sử dụng 264 = 1.8446744 x 10^19 tương đương dung lượng 16 Exbibyte địa lớn rất nhiều so với kiến trúc 32-bit Bên bảng dung lượng RAM tối đa mà Windows XP, Windows 7, Windows Win 10 hỗ trợ

Ngày đăng: 22/01/2024, 17:09

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan