2010-09-08 37 views
9

Tôi đang nghiên cứu Forth cho một dự án cá nhân mà tôi có trong đầu. Nó có vẻ là một ngôn ngữ thực sự mát mẻ và đơn giản để thực hiện trong một máy ảo nhỏ.Forth triển khai từ điển như thế nào? (tranh cãi)

Tôi đặc biệt ấn tượng bởi khả năng sử dụng từ vựng trên đó. Mặt khác, tôi nghĩ cách hoạt động của từ điển quá phức tạp đối với một ngôn ngữ đơn giản. Tôi nói điều này, bởi vì tôi đã đọc một số giấy tờ về nó, và tôi biết rằng nhiều tranh cãi tồn tại.

Có một số bộ vi xử lý thực hiện một số tính năng của Forth trong hướng dẫn của chúng và tôi muốn biết cách chúng triển khai từ điển và các tính năng như từ vựng trên chúng, vì vậy tôi có thể triển khai máy ảo trông giống như các bộ vi xử lý.

Tức là từ điển không phải là một đống đơn giản, lớn lên, và không phải là một vector tuyến tính đơn giản mà chúng ta có thể chỉ mục, vì vậy nó không phải là điều dễ dàng đối với vi mã của bộ vi xử lý cần làm (tôi đoán) . Tôi sẽ thực sự ấn tượng nếu những bộ vi xử lý đặc biệt này có khả năng thực hiện từ điển như nó cần, mà không cần thêm bất kỳ mã nào, tất nhiên. Tôi nghĩ điều này là không thể. Vì vậy, đối với dự án của tôi, tôi đang xem xét để mã thông dịch viên với một đống, với opcodes để thao tác nó, như nó là ví dụ trong 6852. Và mã cho từ điển, sẽ được biên dịch cùng với thông dịch viên và biên tập viên trong Forth. Tôi nghĩ rằng điều này sẽ giống như thực tế hơn.

Cuộc tranh luận này là gì? Các bộ vi xử lý đặc biệt này hoạt động như thế nào, có liên quan đến từ điển và việc sử dụng từ vựng?

+0

@otkins Bạn dự định triển khai máy ảo như thế nào? Trong lắp ráp? ANSI C? Việc lựa chọn ngôn ngữ triển khai và kiến ​​trúc đích sẽ có ảnh hưởng lớn nhất đến cách thực thi từ điển. –

+0

Hãy nói một lần nữa chính xác hơn, bạn sử dụng bộ vi xử lý nào và việc thực hiện Forth Bạn sử dụng khi bắt đầu? –

Trả lời

3

The Wikipedia article on Forth chứa mô tả ngắn về triển khai ban đầu của Từ điển. Xem thêm "Development and Dissemination" trong Evolution of Forth. Việc triển khai ban đầu đã sử dụng danh sách được liên kết. Nhưng một hashtable (bản đồ) có vẻ là một xấp xỉ tốt hơn.

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