2009-04-06 35 views
22

Tôi không có kiến ​​thức về lập trình lắp ráp và muốn tìm hiểu cách mã hóa lắp ráp x86 trên nền tảng Linux. Tuy nhiên, tôi đang gặp khó khăn trong việc tìm kiếm một nguồn lực tốt để tự dạy cho mình.Cách tốt nhất để học lắp ráp x86 trên nền tảng Linux là gì?

Nghệ thuật hội sách có vẻ tốt, nhưng nó dạy HLA. Tôi không quan tâm đến việc phải học một cách, sau đó học lại nó một lần nữa. Nó cũng có vẻ như kiến ​​trúc RISC có nguồn lực tốt hơn để lắp ráp, nhưng tiếc là tôi không có một bộ xử lý RISC để tìm hiểu. Có ai có bất cứ đề nghị?

Trả lời

10

http://asm.sf.net có một số tài liệu về kiến ​​trúc ngoài x86.

Nếu bạn quan tâm đến kiến ​​trúc RISC, bạn có thể chạy Linux trên Qemu. Qemu mô phỏng một số kiến ​​trúc RISC như PowerPC, ARM và MIPS. Bạn có thể tìm thấy sẵn sàng để sử dụng hình ảnh đĩa cứng Qemu here.

Một cách khác để thử nghiệm với kiến ​​trúc RISC là sử dụng trình mô phỏng tích hợp của gdb.

2

Có lẽ không có gì tốt hơn nhiều so với The Art of Assembly Language Programming và các tài nguyên khác tại trang web đó.

+2

Được rồi, nhưng điểm học HLA là gì nếu tôi không thể sử dụng nó? – user87630

+1

Và bạn không thể sử dụng nó tại sao? Tải xuống miễn phí. Trong mọi trường hợp, cuốn sách đi qua tập lệnh thông thường, bao gồm cách bạn mã hóa các cấu trúc mà macro HLA cung cấp cho bạn. –

+5

Tôi bắt đầu đọc cuốn sách này nhưng thấy nó khó đi và thấy HLA đã cản đường. Nó giống như học tiếng Tây Ban Nha bằng cách học tiếng Bồ Đào Nha. Có sách hay để dạy bằng FASM không? –

9

Tôi đã tìm thấy Assembly language step-by-step là một tài nguyên rất tốt. Nó có một phần trong thats trở lại nhằm mục đích lắp ráp Linux quá.

+1

+1 và tác giả đang làm việc trên một ấn bản mới. Gần đây ông viết: "Tôi bây giờ là khoảng 2/3 con đường thông qua Chương 9, 13 và 113.000 từ, khoảng 175.000. Nó phải được thực hiện trước ngày 30 tháng Sáu." Xem http://www.contrapositivediary.com/ để biết các cập nhật. – dwc

0

Hãy thử http://www.emu8086.com là trình giả lập 8086 được lưu trữ trên máy chủ với trình sửa lỗi và trình gỡ lỗi. Nó đi kèm với một hướng dẫn.

+3

Điều đó có nghĩa là chạy các cửa sổ. Đó là một sự hy sinh lớn để hỏi. –

+1

@CharlieMartin "Chạy cửa sổ" "Một sự hy sinh lớn" Làm tôi cười khúc khích. Linux và Unix sống lâu! – NlightNFotis

-3

The Art of Assembly Language trình

+3

Bạn đã đọc câu hỏi chưa? Hoặc câu trả lời? –

0

Tôi đã học được x86 lắp ráp từ một cuốn sách về 8086 (mà tôi không thể nhớ tên của hiện tại ... nó rõ ràng là khá cũ, và tím. Nếu bạn thực sự quan tâm tôi có thể đào nó khi tôi về nhà). Điều đó sẽ chỉ dạy cho bạn những thứ 16 bit, cho những thứ 32 bit tiên tiến hơn, tôi đọc một số hướng dẫn trực tuyến. Tôi chưa bao giờ làm 64 bit. Ít nhất là lúc đầu, hệ điều hành bạn đang nhắm mục tiêu có thể sẽ không quan trọng, vì bạn quá thấp ... BIOS là tất cả những gì bạn thực sự quan tâm. Nếu bạn không có quyền truy cập vào hệ thống thử nghiệm, trình giả lập có lẽ là lựa chọn tốt, như những người khác đã đề cập, nhưng bạn cũng có thể tự xây dựng 8088 hoặc 8086 mà không gặp quá nhiều rắc rối từ các phần riêng biệt. Bạn có thể tìm thấy các hướng dẫn và sơ đồ mạch trực tuyến dễ dàng. Nó sẽ chi phí ít hơn $ 50 và đó là một kinh nghiệm học tập tuyệt vời - bạn đang cơ bản xây dựng một bo mạch chủ từ đầu.

Nếu bạn không quá gắn với hội đồng x86 và muốn tìm hiểu RISC, tôi khuyên bạn nên sử dụng vi điều khiển PIC Microchip. Bạn có thể mua một bộ khởi động cho ít hơn $ 50 (PICKit 1, mà tôi có, thậm chí hoạt động dưới Linux). Họ có tài liệu mở rộng và nhiều hướng dẫn của bên thứ ba nhằm vào những người có sở thích.

+0

Bộ khởi động nghe có vẻ thú vị. Tôi có thể nhìn vào đó. Cảm ơn. – user87630

2

Thực sự có hai phần để học lập trình mức lắp ráp: các khái niệm cơ bản và sau đó là các kiến ​​trúc cụ thể. Nếu bạn không có bất kỳ tiếp xúc với lập trình asm, tôi đề nghị bạn có được những điều cơ bản đầu tiên với một kiến ​​trúc đơn giản, nhỏ, thậm chí tho 'nó có khả năng không trực tiếp áp dụng cho bất kỳ phần cứng thực sự. Nếu nhiều người đang trỏ đến một tài nguyên cụ thể như "Nghệ thuật của ...", hãy xem xét nó, sử dụng nó để tìm hiểu kiến ​​trúc là gì, cách sử dụng các công cụ cơ bản (asm, trình gỡ rối, sự lúng túng, v.v ...).

Một khi những điều đó đã hết, bạn có thể bắt đầu xem xét các tập lệnh nâng cao hơn. Kiến trúc x86 và tập lệnh hướng dẫn khá phức tạp và có nhiều cách tối nghĩa để xoay bộ não của bạn - tìm hiểu điều gì đó đơn giản trước khi bạn giải quyết điều đó.

0

Mặc dù nhiều người tôi biết ở trường ghét cuốn sách này, tôi sẽ liên kết nó anyway:

http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

Lý do chính tôi đã sử dụng cuốn sách này là bởi vì nó sử dụng x86 trên Linux với lắp ráp GNU. Điểm cuối cùng đó đã giúp tôi vì tôi phải sử dụng bộ lắp ráp đó trong phòng thí nghiệm của trường và nếu bạn không biết - cú pháp khác với cú pháp của Intel.

Ngoài ra, tôi sẽ chỉ thêm rằng việc học cách ngôn ngữ cấp cao được biên dịch sang ngôn ngữ lắp ráp thực sự đã giúp tôi di chuyển cùng.

1

x86 lắp ráp thực sự là một ngôn ngữ intel, học tốt nhất với một con chip intel và một nền tảng các cửa sổ mà không DOS

Nếu bạn có một cái gì đó giống như WinXP có từng là một thông dịch viên DOS cho thấy một người sử dụng những điều cơ bản của asm và cho phép người dùng để đảo ngược một lệnh và tinh chỉnh mã trong thời gian thực, sau đó lắp ráp các mã vào một khối có thể được chạy trên phiên dịch

Nó được gọi là "Ketman Interpreter"

đó là cho hệ điều hành DOS asm chỉ nhưng nó khá độc đáo vì nó cho phép bạn xem điều gì xảy ra với tất cả các thanh ghi d cờ và cho phép một cá nhân hoàn toàn không có dấu vết để có được một xử lý trên logic

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