Tôi rất mới với khái niệm viết một bộ lắp ráp và thậm chí sau khi đọc rất nhiều tài liệu, tôi vẫn gặp khó khăn trong đầu quanh một vài khái niệm.Viết một bộ ghép Z80 - lexing ASM và xây dựng một cây phân tích bằng cách sử dụng bố cục?
Quy trình thực sự chia nhỏ tệp nguồn thành mã thông báo là gì? Tôi tin rằng quá trình này được gọi là lexing, và tôi đã tìm kiếm cao và thấp cho một ví dụ mã thực sự có ý nghĩa, nhưng tôi không thể tìm thấy một điều như vậy ví dụ mã đơn giản rất hoan nghênh;)
Khi phân tích cú pháp, thông tin bao giờ cần phải được thông qua lên hoặc xuống cây? Lý do tôi hỏi như sau, hãy:
LD BC, nn
Nó cần phải được biến thành cây phân tích cú pháp sau khi tokenized (???)
___ LD ___
| |
BC nn
Bây giờ , khi cây này được di chuyển, cần phải tạo mã máy sau:
01 n n
Nếu hướng dẫn là:
LD DE,nn
Sau đó, sản lượng sẽ cần phải:
11 n n
Nghĩa là nó đặt ra câu hỏi, nào LD nút trở lại một cái gì đó khác nhau dựa trên các toán hạng hoặc là nó các toán hạng mà trả về một cái gì đó? Và điều này đạt được như thế nào? Các ví dụ mã đơn giản hơn sẽ là tuyệt vời nếu thời gian cho phép.
Tôi quan tâm nhất đến việc tìm hiểu một số quy trình thô tại đây thay vì xem xét các công cụ hiện có nâng cao, vì vậy, xin lưu ý rằng trước khi gửi tôi đến Yacc hoặc Flex.
Điều này được thiết kế để minh họa cho những cây anh ta cần để xây dựng, thay vì phù hợp với một công cụ Z80 cụ thể. Tôi mã hóa một LOT của Z80 lắp ráp trở lại trong những năm 1980; Tôi có thể biết nhiều hơn về nó hơn bạn nghĩ. –
Sau đó trình bày kiến thức của bạn. Bạn đã viết một bộ ghép Z80 chưa? Tôi chưa, nhưng tôi đã viết 8080 và 6809 assembler, và lời khuyên của bạn dường như là tôi đã chết sai. –
Trải nghiệm của bạn có lẽ khác với kinh nghiệm của tôi. Tôi đã mã hóa các trình biên tập cho Collins 8311 (khoảng năm 1968), một máy 12 và 16 bit đã không làm cho nó thương mại, do đó bạn không nghe nói về chúng, các bộ vi mã, và bộ sao chép 6809 mà bạn thấy trong thông điệp khác. Tôi cũng đã xây dựng một loạt các kết thúc trước trình biên dịch (kiểm tra thông tin sinh học và trang web của tôi). Những người lắp ráp ban đầu của tôi được xây dựng bằng những phương tiện đặc biệt và làm việc. Những thứ từ những năm 80 tôi đã xây dựng bằng cách sử dụng lexers và phân tích cú pháp bởi vì nó dễ dàng hơn để xác định, để duy trì, để mở rộng, bạn đặt tên cho nó. –