2008-09-26 35 views

Trả lời

13

Nếu bạn đang sử dụng máy Mac PowerPC, hãy xem bộ lắp ghép nội tuyến gcc. Nếu không, nhìn vào co thắt. Tôi không thể đưa ra bất cứ tài liệu tham khảo phong nha để UBND tỉnh ASM (họ đang ít và xa giữa), nhưng tôi đề nghị những điều sau đây để học hỏi x86 asm:

  • Cuốn sách Reversing by Eldad Eilam
  • Biên dịch mã nguồn C đơn giản với gcc -S và đọc lắp ráp tạo
  • sử dụng Sandpile
  • Tham #openrce trên irc.freenode.net và sử dụng OpenRCE

Ngoài ra, nếu bạn đang không ở chế độ kernel sau đó không có cơ hội vặn vẹo bất cứ thứ gì, thực sự, và ngay cả khi bạn đang ở trong chế độ hạt nhân thì thật khó để tiêu diệt bất cứ thứ gì.

Chỉnh sửa: Ngoài ra, nhận gcc và như vậy từ XCode không phải Macports hoặc somesuch. Bạn đang ở trong một thế giới của các tập tin Mach-O không đúng định dạng nếu bạn không. Không vui khi chẩn đoán các vấn đề về định dạng tệp khi bạn vừa mới bắt đầu tấn công asm.

+0

+1 trên sách đảo ngược - cuốn sách tuyệt vời. –

0

Không có lý do gì khiến bạn không nên; không có gì bạn có thể làm trong ngôn ngữ lắp ráp mà bạn không thể làm trong một ngôn ngữ cấp cao hơn như C.

Theo như các công cụ đi, bạn có thể muốn cài đặt MacPorts và lấy bộ ghép GNU. Điều đó có thể hoặc có thể không phải là cách dễ nhất, nhưng nó hoàn toàn miễn phí và bạn có thể tìm tài liệu hướng dẫn để viết các chương trình Unix trong bộ ghép GNU ở đâu đó trên mạng.

1

XCode (nghĩa là GCC) có hỗ trợ tuyệt vời để viết trình biên dịch. Đó là một điều thú vị để tìm hiểu (mặc dù bạn không cần nó nhiều), và điều tồi tệ nhất bạn có thể làm là làm hỏng chương trình bạn đang viết, giống như trong C. Chỉ Google cho 'gcc inline asm x86 tutorial' và bạn nên tìm nhiều điểm khởi đầu. Đừng lo lắng rằng một số sẽ có vẻ là Linux cụ thể, họ thường sẽ làm việc cũng như trong XCode.

(chỉnh sửa) ... giả sử bạn có một máy Mac của Intel; nếu không thì thay thế 'x86' bằng 'ppc'.

3

Nasm/yasm là đặt cược tốt nhất của bạn; Cú pháp nội tuyến gcc khá tê liệt và có thể rất đau đớn để sử dụng vào những thời điểm, cộng với nghĩa đen là một số thứ mà nó không thể làm. Cú pháp vĩ mô của Nasm cũng hữu ích hơn rất nhiều, một lời tiên tri trong một ngôn ngữ như hội đồng không có các tính năng tạo khuôn mẫu tích hợp.

5

Ngôn ngữ lắp ráp được xác định bởi nền tảng phần cứng chứ không phải hệ điều hành. Cho rằng OS X chạy trên nền tảng Intel và là 64-bit, bạn nên tìm kiếm thông tin về bộ giải mã x64 (còn được gọi là AMD64). Kiểm tra bài viết Wikipedia (http://en.wikipedia.org/wiki/X86-64) để biết nhiều liên kết đến tài liệu về x64.

Ngoài ra, tài liệu công cụ OS X có thể chứa rất nhiều thông tin về trình tạo x64. Đặc biệt, Bộ kết nối Netwide (NASM - http://developer.apple.com/documentation/DeveloperTools/nasm/nasmdoc0.html) có thể có tài liệu về cách xây dựng các ứng dụng OS X bằng cách sử dụng trình kết hợp.

+0

Học x86-64 ASM trước khi học x86 ASM giống như viết một bài thơ sử thi trước khi bạn học từ đầu tiên.Vì vậy, nhiều thứ trong đó sẽ đi những người mới lên. Chắc chắn không được khuyến khích. –

+0

Cần nỗ lực để viết một ứng dụng OSX 64 bit; chúng là 32 bit theo mặc định. –

+0

Đã cấp, tôi không phải là nhà phát triển Mac. Tuy nhiên, OSX là 64-bit và http://www.apple.com/macosx/technology/64bit.html xác nhận quyền sở hữu Xcode 3.0 hỗ trợ xây dựng các ứng dụng 64 bit, vì vậy nó không chỉ là vấn đề lựa chọn của nhà phát triển? Và biết bạn làm gì, nhưng điều đó cũng áp dụng như nhau để xây dựng các ứng dụng 32 bit. –

1

here

Tôi lập trình được lắp ráp trên máy Mac. Đó là Motorola 680x0 assembler sử dụng MPW. Tôi đã chạm vào bộ ghép PowerPC vài lần trong CodeWarrior và ProjectBuilder. Bây giờ ProjectBuilder được gọi là XCode, và có Intel. Bộ lắp ráp là một trong nhiều công cụ trong XCode.

Tôi ban đầu đã học lắp ráp trên Apple II: màn hình ngôn ngữ máy 6502 được xây dựng trong ROM, bộ ghép mini Sweet16 và các thiết bị khác. Sau đó, tôi đã sử dụng bộ xử lý Intel 80186 để tăng tốc các bit chậm của mã C, và công việc được trả tiền cho một khóa học một ngày về lắp ráp Intel 80186 tại một trường đại học. Sau đó, tôi đã phải duy trì một số lắp ráp 680x0 cho Mac. Đó là một thời gian dài trước đây.

Tôi không nghĩ có bất kỳ lý do gì để không lắp ráp. Học tập là rất tốt. Tìm hiểu tất cả các bạn có thể. Thả vào trình gỡ rối cấp đủ thấp và xem mã đã tháo rời.

Lời khuyên của tôi là:

Đừng sợ hãi.

5

Để bắt đầu học lắp ráp, bạn có thể muốn bắt đầu với chương trình C đơn giản và yêu cầu GCC để tạo mã lắp ráp cho nó bằng cách sử dụng tùy chọn -S:

gcc -S hello.c -o hello.asm 

Sau đó bạn sẽ có thể hiểu Làm thế nào để gọi chức năng, vượt qua đối số, vv

0

Có hai điều bạn cần biết để viết ngôn ngữ lắp ráp trên hệ thống với hệ điều hành (trái ngược với cụm kim loại trần) là thế giới của riêng nó):

  1. Cách bộ lệnh hoạt động - tải tài nguyên cho Intel X86 nếu bạn có máy Mac Intel, vẫn được thiết lập hợp lý cho PPC ví dụ Mac OS X Internals.

  2. Làm thế nào để lắp ráp liên kết các chương trình của bạn - nếu bạn có các công cụ cho nhà phát triển cài đặt bạn có GCC và các công cụ liên quan

  3. Làm thế nào để nói chuyện với các hệ điều hành - đây là nơi lắp ráp máy Mac là rất nhiều ít tài liệu tốt so với Windows hoặc Linux. Có thể bạn phải viết các chương trình C tương đương và sử dụng 'gcc -S' để xem quy ước khôi phục/gọi lại nào là phù hợp. Nó phụ thuộc vào những gì bạn muốn làm nhưng tại một miniumum bạn cần các cuộc gọi hệ thống OS cho IO và cấp phát bộ nhớ.

Điểm khởi đầu tốt là here.

0

Nếu bạn đã có Developer Tools cài đặt, bạn có thể chỉ cần mở ga và gõ như (GNU Assembler - một phần của binutils).

0

Đối với PPC, hãy thử Lightsoft

+0

Trang web không còn cung cấp phần mềm PPC nữa. – Seki

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