2010-01-31 26 views
10

Tôi biết 8086 Hội và học MIPS hội. Ngoài ra, tôi đang tìm hiểu Cụm từ thông dụng, sau đó tôi muốn biết:Biểu thức thông thường và hội

  • Tôi có thể sử dụng Cụm từ thông dụng như thế nào?
+2

Boo về bất cứ ai đã bỏ phiếu để đóng này. Đây là một câu hỏi lập trình hoàn toàn hợp pháp, và thế giới chắc chắn cần nhiều người hơn tham gia vào các vấn đề khó khăn. –

Trả lời

9

Đây là một vấn đề khó khăn để rút khỏi lắp ráp từ đầu. Không có ngôn ngữ lắp ráp nào sẽ hỗ trợ các biểu thức chính quy như là một cấu trúc hạng nhất bởi vì có quá nhiều sự khác biệt trong mức trừu tượng để làm cho nó trở thành một sự bổ sung hữu ích. Điều đó có nghĩa là bạn cần tự mình xây dựng nó.

Hỗ trợ các biểu thức chính quy về cơ bản giống như có trình biên dịch bên trong chương trình của bạn, dịch biểu thức thành chuỗi các lệnh phù hợp. Bạn sẽ phải xây dựng tất cả các phần cấu thành: một công cụ dịch thuật, một loạt các quy tắc chuyển đổi, một bộ kết hợp DFA và một công cụ phù hợp.

Điều đó nói rằng, không phải là không thể! Bắt đầu nhỏ, hỗ trợ các tập con nhỏ của ngôn ngữ thực bạn muốn hỗ trợ và sau đó làm việc theo cách của bạn. Hãy xem chapter 16 of Assembly Language Programming để có hướng dẫn chi tiết về cách bạn có thể tạo công cụ biểu thức chính quy của riêng mình. Bạn sẽ cần một sự hiểu biết tốt về cách họ làm việc (mà chương này sẽ cung cấp cho bạn) và một sự hiểu biết vững chắc về lắp ráp là tốt (xem các chương trước đó cho rằng).

+2

@Nathan Campos: Theo dõi: trong khi tôi hoan nghênh mong muốn của bạn để thử thách, nếu bạn chỉ học 8086, điều này gần như chắc chắn sẽ là một chủ đề cực kỳ tiên tiến tương đối với trình độ kỹ năng hiện tại của bạn. Nếu bạn muốn một cái gì đó mà vẫn sẽ được thử thách, hãy thử tay của bạn tại một subgoal đơn giản đầu tiên (có lẽ chỉ cần xây dựng một máy nhà nước từ một chuỗi, ví dụ). –

+0

Tôi biết 8086 Hội rất nhiều, nhưng học MIPS. **; -) ** –

1

Regular expressions không tồn tại trong lắp ráp, điều đó dường như một chút câu hỏi kỳ lạ, như có tính chất ngôn ngữ cấp cao Regex, nó không tồn tại các loại hạt và bu lông mức ...

Chỉnh sửa: Nathan, here là liên kết mà bạn có thể quan tâm. Cuộn xuống cuối trang;)

Hy vọng điều này sẽ giúp, Trân trọng, Tom.

+0

Chúng có thể không tồn tại như một cấu trúc hạng nhất, nhưng điều đó không có nghĩa rằng đây là một "câu hỏi lạ". Các biểu thức chính quy không tồn tại trong C# như là một cấu trúc hạng nhất, hoặc, nhưng tôi nghĩ rất ít người sẽ nói đó là một ý tưởng tồi mà các regex nằm trong khung công tác. –

+0

@ John: Tôi đồng ý ... vâng, nhưng tôi không ngụ ý rằng không thể làm được, thay vào đó nó sẽ là một điều đau đớn để đạt được như là tham chiếu rõ ràng và khớp mẫu bằng cách sử dụng thanh ghi ... căng thẳng ... Câu trả lời của bạn chính xác tổng hợp nó lên! Nó chỉ là một câu hỏi bất thường để hỏi ... do đó câu nói của tôi 'câu hỏi lạ' – t0mm13b

+0

Meh! Kiểm tra liên kết đó, nó không phải là những gì bạn đang tìm kiếm! Xin lỗi Nathan: ( – t0mm13b

1

Tập hợp articles here mô tả cách tạo một công cụ regex rất đơn giản nhưng mạnh mẽ từ đầu. Nó sử dụng C++ nhưng giải thích lý thuyết chi tiết và mã có thể được dịch sang ASM mà không có quá nhiều nỗ lực của một lập trình viên có kinh nghiệm.

Điều đó nói rằng, tôi không nghĩ đó là một bài tập đặc biệt thú vị, không phải cho việc học ASM cũng như không học các biểu thức thông thường. Bạn sẽ chỉ nhận được quá bogged xuống bởi các chi tiết.

0

Bắt đầu với các cụm từ thông dụng rất đơn giản. Ví dụ, nhận ra chuỗi ký tự chữ cái và ký tự số và làm việc theo cách của bạn từ đó. Bạn sẽ cần phải xem xét cẩn thận cách mã của bạn sẽ cung cấp kết quả của nó.

Bạn nên tạo trình phân tích cú pháp regex trước tiên, vì càng có nhiều người trong diễn đàn này có thể giúp bạn. Một khi bạn đã có nó làm việc, để có thể dịch nó để mã assembler. Một lần nữa, nhiều người ở đây sẽ quen thuộc với lập trình ngôn ngữ lắp ráp 8086 so với MIPS, vì vậy có thể là một ý tưởng hay khi sử dụng 8086 mặc dù kiến ​​trúc CPU không đẹp lắm.

0

Không chắc chắn nếu bạn muốn biết làm thế nào để thực hiện một công cụ regex trong assembler hoặc chỉ làm thế nào để dễ dàng sử dụng biểu thức thông thường trên chuỗi null của bạn kết thúc từ ngôn ngữ lắp ráp. Nếu đầu tiên của nó, bạn đã được đưa ra một số gợi ý. Nếu đó là sau này, nó phụ thuộc vào nền tảng của bạn, nhưng cách dễ nhất là gọi một thư viện mã hóa C từ hội đồng của bạn. Các biến thể Unix có cụm từ thông dụng POSIX đã có sẵn trong libc và bạn có thể gọi chúng từ hội đồng của bạn, chỉ cần tuân theo quy ước gọi điện aproppiate.

3

Hãy thử điều này: AsmRegEx - regular expression engine

Nó được viết trong FASM. Thật không may, có vẻ như dự án sẽ không tiến triển nữa ...

+0

Thật tuyệt vời, tôi sẽ xem xét nó. Cảm ơn. **: -) ** –

Các vấn đề liên quan