2011-09-07 38 views
5

Tôi đang viết một trình mô phỏng 68k được diễn giải là một dự án cá nhân/giáo dục. Ngay bây giờ tôi đang cố gắng phát triển một cơ chế giải mã đơn giản, chung chung.Giải mã hướng dẫn 68k

Như tôi đã hiểu, hai byte đầu tiên của mỗi lệnh là đủ để xác định duy nhất hoạt động (với hai trường hợp ngoại lệ hiếm) và số từ còn lại để đọc, nếu có.

Dưới đây là những gì tôi muốn đạt được trong giai đoạn giải mã của tôi:

1. read two bytes 
2. determine which instruction it is 
3. extract the operands 
4. pass the opcode and the operands on to the execute phase 

tôi có thể không chỉ vượt qua hai byte đầu tiên vào một bảng tra cứu như tôi có thể với vài bit đầu tiên trong một vòm RISC , bởi vì toán hạng là "theo cách". Làm thế nào tôi có thể hoàn thành một phần 2 theo cách tổng quát?

Nói chung, câu hỏi của tôi là: Làm cách nào để xóa biến thể của toán hạng khỏi quá trình giải mã?

More nền:

Dưới đây là một bảng một phần từ phần 8.2 của Programmer Reference Manual:

Table 8.2. Operation Code Map 

Bits 15-12  Operation 
0000   Bit Manipulation/MOVEP/Immediate 
0001   Move Byte 
... 
1110   Shift/Rotate/Bit Field 
1111   Coprocessor Interface... 

này có ý nghĩa rất lớn đối với tôi, nhưng sau đó tôi nhìn vào các mẫu bit cho mỗi hướng dẫn và thông báo rằng không có một hướng dẫn duy nhất trong đó các bit 15-12 là 0001, 0010 hoặc 0011. Phải có một số phần lớn của hình ảnh mà tôi đang thiếu.

Trang web Decoding Z80 Opcodes giải thích rõ ràng giải mã, đó là điều tôi chưa tìm thấy trong sách hướng dẫn tham chiếu của lập trình viên 68k hoặc bằng cách googling.

+0

Dự án của bạn phát triển đến mức nào, bạn có trình tách rời hoặc trình giả lập không? –

+0

Tôi vẫn đang xây dựng một tập lệnh tạo bảng tra cứu hoàn chỉnh. Khoảng 70% đã hoàn thành. – mwcz

+0

@CountablyInfinite Bạn đang làm việc trên một dự án tương tự? – mwcz

Trả lời

2

Tôi đã quyết định chỉ cần tạo bảng tra cứu với mọi mẫu có thể cho từng hướng dẫn. Đó là ý tưởng đầu tiên của tôi, nhưng tôi đã loại bỏ nó như là "lãng phí, không dung nạp". Bây giờ, tôi chấp nhận nó là "thực sự nhanh".

+1

Ah, quy tắc đầu tiên của mã trình mô phỏng: đôi khi phương pháp tiếp cận bạo lực có vẻ lộng lẫy là tốt nhất một. :) –

+1

Và nó phụ thuộc rất nhiều vào CPU chạy mô phỏng. Một L2 16 megabyte có thể làm việc kỳ diệu. :) –

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