MSIL – Sử dụng IL Disassembler (ildasm.exe) và IL Assembler (ilasm.exe)

Đây là hai công cụ được tích hợp khi bạn cài Visual Studio và .Net. Như tên gọi của nó, bạn có thể dùng hai công cụ này để phân tích một file PE của .Net thành mã nguồn IL (Intermediate Language) và biên dịch mã IL trở lại thành file PE. Bạn có thể thấy chúng khá đơn giản và không mất nhiều thời gian để nắm được.

Tiếp tục đọc

Advertisements

CIL Instruction Set – Tra cứu các lệnh CIL

.Net CIL instructions are run on a VES (Virtual Execution System), similar to JVM (Java Virtual Machine) for the Java programming language.

Any .Net compatible language will compile to CIL instructions. Only at run time do these CIL instructions get converted to local native instructions such as:

Tiếp tục đọc

Algorithm – Tạo và sử dụng cây biểu thức (expression tree)

Các biểu thức toán học đều có thể được thể hiện dưới dạng cấu trúc cây, trong đó các node lá là những toán hạng (biến, hằng số) và các node còn lại là các toán tử (*, /, +, -). Với cách biểu diễn dạng này, ta có thể dễ dàng dùng các phép duyệt với cây nhị phân để tạo ra những biểu thức toán học dạng tiền tố, trung tố và hậu tố mà bài trước tôi đã trình bày qua.  Và khái niệm này được gọi là cây biểu thức, hãy thử tìm hiểu làm cách nào để tạo và tận dụng được các khả năng của nó.

Tiếp tục đọc

Algorithm – Tính giá trị của biểu thức tiền tố và hậu tố

Việc tính giá trị của một biểu thức toán học ở dạng trung tố trong máy tính thông thường sẽ được chuyển sang dạng ký pháp nghịch đảo Ba Lan (hậu tố) để việc tính toán được dễ dàng. Bạn có thể xem lại thuật toán chuyển đổi từ trung tố sang hậu tố trong bài viết “Chuyển biểu thức trung tố sang tiền tố và hậu tố bằng Stack” của tôi, và tải project mẫu tại đây. Trong bài viết này, tôi sẽ trình bày phương pháp tính giá trị của một biểu thức tiền tố và hậu tố bằng Stack. Bạn có thể sẽ cần áp dụng kiến thức dưới đây nếu muốn tạo ra một cây biểu thức (expression tree) từ các dạng biểu thức này.

Tiếp tục đọc

Algorithm – Chuyển biểu thức trung tố sang tiền tố và hậu tố bằng Stack

Các biểu thức đại số được sử dụng hằng ngày đều được biểu diễn dưới dạng trung tố (infix). Cách biểu diễn này rất dễ hiểu với con người vì hầu hết các toán tử (+, -, *, /) đều là toán tử hai ngôi và chúng phân cách giữa hai toán hạng với nhau. Tuy nhiên đối với máy tính, để tính được giá trị của một biểu thức đại số theo dạng này không đơn giản như ta vẫn làm. Để khắc phục điều đó, máy tính cần chuyển cách biểu diễn các biểu thức đại số từ trung tố sang một dạng khác là tiền tố hoặc hậu tố. Trong bài này tôi sẽ giới thiệu kĩ thuật để giúp máy tính thực hiện điều này thông qua ngôn ngữ minh họa C#.

Tiếp tục đọc

Y2 – Expression Converter Demo (v1.2)- Chuyển biểu thức trung tố sang tiền tố và hậu tố

Đây là một phần mềm Demo minh họa việc chuyển đổi giữa biểu thức trung tố sang biếu thức tiền tố (ký pháp Ba Lan) và hậu tố (ký pháp nghịch đảo Ba Lan). Các loại biểu thức này còn được gọi tắt với tên tiếng Anh là infix (trung tố), prefix (tiền tố) và postfix (hậu tố) dựa vào vị trí của toán tử so với các toán hạng trong biểu thức.

Tiếp tục đọc

Y2 – MineLand v1.0.1 Game dò mìn (tương tự Minesweeper)

Minisweeper (của Windows) có phần giao diện chính là một bảng các ô vuông xếp liền nhau tạo thành một hình chữ nhật có chiều rộng và dài tối thiểu là 9 ô (đơn vị là ô vuông) và số mìn tối thiểu là 10. Trong bảng này sẽ có các ô được đặt mìn ngẫu nhiên và nhiệm vụ của người chơi là mở tất cả các ô không có mìn bằng cách click chuột trái vào các ô đó, khi chỉ còn các ô có mìn còn lại thì kết thúc màn chơi.

Xem hướng dẩn giải thuật tại đây

Tiếp tục đọc

C# – Hướng dẫn viết game Dò mìn (Minesweeper)

Minesweeper là một game mini được tích hợp sẵn trong Windows nên có lẽ ai cũng từng chơi qua vài lần. Và nếu bạn đang có hứng thú muốn tạo ra một game nhỏ để thử sức thì đây là một trong những lựa chọn thích hợp. Minesweeper có giao diện và luật chơi đơn giản, thuật toán cài đặt cũng dễ dàng và không tốn nhiều tài nguyên máy.

(Cập nhật chức năng click chuột bằng 2 nút trái phải 24/1/2011)

Download demo+sourcecode v1.0.1 (255KB)

Tiếp tục đọc

Algorithm – Cập nhật thuật toán vẽ cây nhị phân

Bản cài đặt vẽ cây nhị phân trước đây (xem tại đây) tôi đã giới thiệu sử dụng phép chia dư để tính khoảng cách giữa các node theo chiều ngang. Vì thế xác suất các node nằm đè lên nhau rất lớn, đặc biệt khi cây có nhiều node thì mức độ tập trung node của cây tại một vùng khiến cho các node chỉ nhìn được một phần nhỏ. Tiếp tục đọc