Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
782,58 KB
Nội dung
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 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 tốn 49 Hình 3.2 Màn hình 50 Hình 3.3 Màn hình sau hoà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 khơng phải 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 toá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, 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ợ - Đọc file warning sinh - Tra cứu mã warning tiến hành xử lý - Khi xử lý gặp warning build lại project chưa hết lại tra cứu xử lý lại, sau lần warning không hết tiến hành xử lý đến warning 3.1.1.2.Lưu đồ thuật tốn Hình 3.1 Lưu đồ thuật tốn 48 3.1.1.3.Đề xuất giải pháp đa luồng xử lý phân tích lỗi Trong bước việc đọc file công việc chiếm nhiều thời gian CPU Để tận dụng xử lý đa nhiệm CPU tài nguyên nhớ đệm tác giả đề xuất áp dụng giải pháp xử lý đa nhiệm C++ Việc áp dụng cải thiện đáng kể thời gian xử lý CPU đọc phân tích mã lỗi Hình 3.2 Giải pháp đa luồng phân tích lỗi 3.1.2.Giao diện chương trình Hình 3.3 Màn hình 49 Input: nơi chứa file *.sln chương trình cần fix warning chuyển đổi Output: nơi chưa file chương trình sau thực fix warning (sẽ clone lại toàn project file sửa để đảm bảo vấn đề backup) Process: tiến hành xử lý 50 Hình 3.4 Màn hình sau hồn thành 3.2.Ví dụ thực nghiệm khắc phục cảnh báo C4996 Compiler warning C4996 cảnh báo thường gặp thao tác với hàm có liên quan tới thư viện CRT Visual Studio từ phiên 2012 trở Tôi xin giới thiệu đôi nét CRT cách khắc phục cảnh báo C4996, hy vọng viết giúp ích cho bạn giải phần khó khăn bước đầu tiếp cận với Visual Studio phiên 2012 trở 3.2.1.Nguyên nhân dẫn đến cảnh báo C4996 CRT phần thư viện chuẩn C++ kết hợp với thư viện chuẩn ISO C99, CRT quản lí hàm có liên quan tới thời gian thực thi (thời gian chạy file exe) Tức hàm phải có tác động từ bên ngồi vào Ví dụ: hàm scanf() sau bạn biên dịch xong, cho chạy chương trình, thời gian mà hàm scanf chờ lấy liệu vào thời gian thực thi Các hàm vậy, compile khơng có lỗi lại phát sinh lỗi bạn chạy chương trình tùy thuộc vào liệu 51 Ví dụ: hàm strcpy(a, b) dùng chép chuỗi b qua chuỗi a, chuỗi a lại không đủ vùng nhớ để chứa hết chuỗi b, lúc chương trình bị lỗi buộc phải dừng lại Những lỗi thời gian thực thi gây hậu nghiêm trọng, file exe bị buộc dừng đột ngột, chưa chạy đến dịng lệnh đóng chương trình lại, máy tính nhận diện file mở bạn khơng thể mở lại lần trừ tắt máy khởi động lại Từ Visual Studio 2012 trở đi, thư viên CRT bổ sung thêm hàm với tính tương tự hàm gốc an toàn tránh xảy lỗi trên, hàm gốc bị đánh dấu khơng an tồn Điều dẫn đến, bạn sử dụng hàm gốc, compiler bật cảnh báo lên, để nhắc nhở hàm dẫn đến lỗi q trình chạy Đó Compiler Warning C4996 3.2.2.Các thể cụ thể Khi bạn sử dụng hàm printf, scanf, fopen, … thường thấy bị "ép" phải sử dụng printf_s, scanf_s, fopen_s, … thường thắc mắc phải sử dụng printf_s thay printf? Sao ta khơng thể sử dụng printf, … 3.2.3.Các cách giải vấn đề 3.2.3.1.Cách - Dùng hàm Dùng hàm hơn, đánh dấu "safe" cách thêm "_s" phía sau hàm gốc Tuy nhiên, hàm có sản phẩm từ Visual Studio, khơng có trình biên dịch khác GCC, Xcode Lợi ích nhược điểm cách code không cần giải vấn đề, nhiên code sử dụng cho đa tảng ta lại phải sửa lại code sử dụng tảng khác 52 3.2.3.2.Cách - Vẫn sử dụng hàm gốc Nguyên tắc ta phải thơng báo cho trình biên dịch biết bỏ qua thông báo này, nghĩa ta hiểu rõ ta làm chấp nhận rủi ro "cờ" _CRT_SECURE_NO_WARNINGS Trước sử dụng hàm CRT scanf hay printf, fopen, ta đưa thêm cờ #define _CRT_SECURE_NO_WARNINGS # include … 3.2.3.3.Sử dụng #pragma để tắt cảnh báo C4996 Câu lệnh #pragma token-string cho phép ta thị cho compiler biên dịch chương trình theo tùy chọn đặc biệt đó, token-string có tham số chức riêng biệt, token-string tùy thuộc vào compiler, đề cập tới Compiler C/C++ Microsoft Để tắt cảnh báo C4996 sử dụng câu lệnh #pragma Tơi thường đặt đầu file # pragma warning(disable:4996) 3.3.Kết thực nghiệm Tác giả tiến hành xử lý với 140 cảnh báo (warning) phương pháp Review code, bao gồm danh sách warning sau: STT 10 Cảnh báo (Warning) C1041 C1083 C1189 C1190 C2011 C2027 C2039 C2043 C2050 C2059 53 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 C2061 C2062 C2065 C2086 C2137 C2143 C2144 C2146 C2227 C2228 C2238 C2259 C2275 C2334 C2337 C2365 C2371 C2378 C2440 C2447 C2530 C2556 C2653 C2660 C2661 C2664 C2672 C2704 C2780 C2789 C2913 C2976 C2988 C2990 C3132 C3285 C3423 C3646 C3680 54 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 C3688 C3690 C3699 C3805 C3861 C4002 C4003 C4005 C4013 C4018 C4024 C4028 C4047 C4057 C4060 C4081 C4090 C4091 C4100 C4101 C4102 C4113 C4121 C4129 C4133 C4146 C4172 C4189 C4192 C4211 C4244 C4245 C4251 C4267 C4273 C4275 C4290 C4293 C4297 55 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 C4302 C4305 C4309 C4311 C4312 C4313 C4334 C4430 C4456 C4457 C4458 C4459 C4473 C4474 C4476 C4477 C4544 C4554 C4603 C4615 C4627 C4653 C4661 C4700 C4702 C4715 C4722 C4778 C4793 C4800 C4805 C4809 C4819 C4835 C4838 C4947 C4996 LNK4017 LNK4044 56 128 LNK4070 129 LNK4075 130 LNK4197 131 LNK4199 132 LNK4204 133 LNK4217 134 LNK4222 135 LNK4229 136 MIDL2311 137 MIDL2469 138 MSB8012 139 MSB8018 Hình 3.5 Danh sách cảnh báo xử lý Với cảnh báo có phương pháp xử lý Ví dụ cảnh báo C4996 mơ tả xử lý phần 3.1 Về phương pháp xử lý tự động, tác giả xây dựng công cụ xử lý cảnh báo sau: Các warning tiến hành xử lý: - C4996: fopen, itoa, close, strcpy, sprint, wcscpy - C4010 - C4244 - C4305 Về thời gian xử lý, tác giả thử nghiệm project có tên Project1, Project2, Project3, Project4 Mỗi project có dung lượng code (chỉ tính file *.h, *.cpp) cần xử lý khác tăng dần Tác giả thử nghiệm với giả pháp áp dụng đa nhiệm C++ khơng áp dụng kết có chênh lệch tương đối 57 Bảng 3.1 Kết thực nghiệm không áp dụng đa nhiệm STT Tên Project Size Thời gian xử lý Project1 8192 bytes 456ms Project2 23196 bytes 756ms Project3 36432 bytes 1289ms Project4 78964 bytes 1602ms Bảng 3.2 Kết thực nghiệm không áp dụng đa nhiệm STT Tên Project Project1 Project2 Project3 Project4 Size 8192 bytes 23196 bytes 36432 bytes 78964 bytes Thời gian xử lý 318ms 611ms 956ms 1123ms So sánh thời gian xử lý đa nhiệm không đa nhiệm 1800 Thời gian xử lý (ms giây) 1600 1400 1200 1000 800 600 400 200 Project Project Project Không đa nhiệm Đa nhiệm Project Khi kích thước project tăng nhận rõ sữ chệnh lệch hiệu xử lý phương pháp 58 So sánh thời gian xử lý đa nhiệm không đa nhiệm Thời gian xử lý (ms giây) 3000 2500 2000 1500 1000 500 Project Project Project Không đa nhiệm Đa nhiệm 59 Project KẾT LUẬN Như biết chuyển đổi code C/C++ từ hệ điều hành 32 bit 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 Đề tài trình bày tổng quan hệ điều hành 32 bit 64 bit Các khái niệm lợi ích hạn chế vi xử lý 64 bit so với 32 bit Luận văn trình bày tổng quan ngơn ngữ lập trình C/C++ vấn đề phát sinh chuyển ứng dụng code chạy 32 bit sang 64 bit Trong luận văn trình bày phương pháp có để xử lý vấn đề nêu Đặc biệt luận văn nguyên nhân phương pháp xử lý chi tiết lỗi cảnh báo Luận văn xây 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 Công cụ thử nghiệm để xử lý cảnh báo phương pháp tự động 140 cảnh báo phương pháp Review code liệt kê Mặc dù cố gắng trình độ có hạn cộng với thời gian nghiên cứu khơng nhiều nên luận văn cịn nhiều hạn chế Ví dụ thời gian xử lý project lớn lâu, đơi rơi vào vịng lặp vơ hạn nên tác giả đưa giải pháp ấn định thời gian để khỏi vịng lặp 60 Hướng phát triển thời gian tới tác giả tiếp tục nghiên cứu để giải 140 cảnh báo phương pháp tự động cảnh báo sử dụng giải thuật tìm kiếm nhanh để giải vấn đề thời gian xử lý 61 TÀI LIỆU THAM KHẢO [1] Andrey Karpov, Evgeniy Ryzhkov, “20 issues of porting C++ code on the 64-bit platform” [2] Steve McConnell, “Code Complete, 2nd Edition” Microsoft Press, Paperback, 2nd edition, Published June 2004, 914 pages, ISBN: 0–7356– 1967–0 [3] Scott Meyers, Martin Klaus “A First Look at C++ Program Analyzers.”, 1997 [4] Andrey Karpov, “The forgotten problems of 64-bit programs development” [5] Andrew Josey, “Data Size Neutrality and 64-bit Support” [6] Evgeniy Ryzhkov Viva64: what is it and for whom is it meant? [7] https://tinhte.vn/threads/vi-xu-li-64-bit-la-gi-va-no-giup-ich-nhu-the- nao-cho-cac-thiet-bi-dien-toan.2173158/ [8] https://www.viva64.com/en/a/0004/ [9] https://www.stdio.vn/users/tran-thi-thu-hien-154 [10] https://msdn.microsoft.com/en-us/library/c733d5h9.aspx 62 ... 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. .. 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... 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