Có phương ngữ nào của Lisp có ngữ nghĩa Lisp và thao tác ở mức độ thấp của C không? Một cái gì đó giống như lấy một địa chỉ bộ nhớ tùy ý (bộ nhớ ảo hoặc vật lý) và làm điều gì đó với nó; con trỏ vào thiết bị phần cứng ...Lisp không có Bộ thu gom rác để lập trình mức thấp
Ví dụ:
(defvar a '(1 2 3 4)) ;; I have a list
(defvar b (cdr a)) ;; b is the cdr of a. But I want b to
;; actually refer to the tail of a
(setf b '(4 5 6)) ;; b now has new value, but a remains unchanged
Những gì tôi muốn là sử dụng Lisp để diễn tả vấn đề ở mức độ thấp. Ví dụ, làm thế nào để kiểm soát các byte và bit riêng lẻ khi chạy Lisp trên kim loại trần? Trong C, tôi có thể nhận được một con trỏ và thực hiện số học con trỏ để trỏ đến bất cứ nơi nào tôi muốn trong một không gian bộ nhớ (ảo hoặc vật lý). Con trỏ cũng có thể trỏ đến các thiết bị và các địa chỉ được xác định tùy ý bởi nhà thiết kế phần cứng.
Tại sao tôi cần điều này? Vâng, tôi muốn tìm hiểu làm thế nào để sử dụng Lisp với lập trình cấp thấp. Về lâu dài, tôi muốn viết một hệ điều hành đơn giản cho việc học tập, nhưng trong Lisp. Tôi cũng sẽ viết một chữ C cho những hiểu biết ban đầu, nhưng nếu tôi chỉ có thể viết bằng C, làm thế nào tôi có thể chắc chắn và nói rằng tôi hiểu cách thực hiện một hệ điều hành? Tôi nghĩ rằng tôi chỉ thực sự hiểu làm thế nào để thực hiện một hệ điều hành nếu tôi có thể viết nó bằng ngôn ngữ khác hơn là C để đảm bảo.
Tôi không muốn viết một cái gì đó giống như lõi C cho hệ điều hành và Lisp cho mọi thứ khác.
Không chắc chắn những gì bạn đang yêu cầu . GC và thao tác bộ nhớ mức thấp có thể cùng tồn tại. Triển khai Lisp thường gặp nhất có thể thực hiện điều đó. Xem chương về FFI trong các sách hướng dẫn tương ứng. Xem thêm các triển khai như ECL có thể dễ dàng được nhúng vào các chương trình C. –
@RainerJoswig Tôi đã chỉnh sửa câu hỏi để làm rõ. Có giải pháp nào khác hơn là dựa vào C và hệ điều hành máy chủ cho các hoạt động cấp thấp không? – Amumu