2011-12-07 46 views
6

Tôi muốn thử một số mã lắp ráp ARM với apple iOS chỉ dành cho mục đích giáo dục. Tôi muốn bắt đầu với một số trong dòng mã trong Xcode. Sự hiểu biết của tôi là tôi cần biên dịch cho thiết bị iOS, ví dụ như iPhone của tôi, có nghĩa là tôi cần phải trả $ 99/năm cho tư cách thành viên. Tôi không nghĩ rằng tôi có thể sử dụng mã lắp ráp ASM với trình mô phỏng điện thoại iOS. Tôi đang gặp khó khăn trong việc tìm kiếm các ví dụ, sách hoặc tài liệu về mã lắp ráp ARM trong Xcode env bằng iPhone. Tôi có làm điều này sai không? Có lẽ iOS không phải là môi trường thân thiện với người dùng nhất để học ARM Assembly.Mã lắp ráp iOS

+1

FWIW, đây là một [bộ sưu tập các liên kết] (http://www.shervinemami.info/armAssembly.html) trên văn bản chương trình lắp ráp cho iOS. Tôi nghiêm túc nghi ngờ giá trị của bài tập này, ngoài giáo dục và giải trí. – dasblinkenlight

+0

Viết mã lắp ráp cho iOS/ARM yêu cầu thiết bị iOS và tư cách thành viên trong chương trình. Để bắt đầu, có thể là đủ để đọc mã ARM được tạo bởi trình biên dịch, xem http://stackoverflow.com/questions/13166055/how-do-i-get-started-with-arm-on-ios –

+1

bài đăng trên blog về thời gian của ARM asm trong iOS cung cấp một số liên kết hữu ích và một dự án Xcode ví dụ bao gồm các tệp .s được đính kèm với dự án Xcode: http://www.modejong.com/blog/post10_arm_timing_framework/index.html – MoDJ

Trả lời

1

Điều bạn cần là bộ công cụ phát triển ARM với bộ công cụ lập trình dựa trên Linux. Sau đó bạn có thể cài đặt VirtualBox trên máy Mac, tạo một máy ảo Linux và cài đặt các công cụ phát triển ARM trên máy ảo Linux. Hãy chắc chắn rằng khi bạn mua một bộ công cụ ARM dev, nó đi kèm với cpu ARM, bảng dev/test hoàn chỉnh, cáp USB để chuyển/gỡ lỗi phần mềm và chuỗi công cụ Linux hoàn chỉnh. Bạn có thể tìm các bộ dụng cụ này với giá dưới $ 99.

+1

Cách điều đó có giúp anh ta chạy bất kỳ mã nào của anh trên iPhone của mình dưới dạng nhị phân không? – Strelok

+2

Nó không, nhưng nếu anh ta muốn viết và gỡ lỗi mã lắp ráp ARM anh ta sẽ đi xa hơn nhiều với một bộ ARM dev thích hợp. Và nếu anh ta không thích nó, anh ta có thể bán lại nó không giống như thành viên phát triển iOS của mình. – Jacek

+0

Nếu anh ấy chưa phải là nhà phát triển iOs không phải là nền tảng để bắt đầu. Tôi đồng ý với Jacek. –

2

Mặc dù không có một cert ký mã số, tôi nghĩ rằng bạn sẽ có thể đi đến các chương trình menu pop-up (phía bên phải của nó) và chọn "iOS Device"

Khi bạn làm điều đó, sau đó bạn có thể chọn bất kỳ tệp .c hoặc .m (hoặc .cpp hoặc .mm) nào trong dự án của bạn, mở trình chỉnh sửa trợ lý và chọn "Assembly" từ thanh tác vụ trợ lý. Sau đó, bạn có thể thấy mã nguồn và mã lắp ráp cạnh nhau.

Hoặc bạn chỉ có thể đi vào menu sản phẩm và Generate Output -> lắp ráp

Bạn có thể tìm thấy nó dễ dàng hơn để bắt đầu với mã C, nơi mà các cuộc gọi chức năng sẽ dễ dàng hơn nhiều để làm theo bước đầu hơn các cuộc gọi phương pháp Objective-C .

11

Sao lưu ...

Bạn đang cố gắng tìm hiểu điều gì? Lắp ráp cánh tay hoặc lập trình iOS? Chọn một ...

Bạn có kinh nghiệm lắp ráp nào không?

Bạn nghĩ bạn muốn học gì trong việc lắp ráp cánh tay? Nhảy vào và viết một số ứng dụng gui thổi đầy đủ? Bạn cần phải học cách đặt ngay lập tức vào sổ đăng ký thêm và hoặc và xor và lưu câu trả lời trong sổ đăng ký. sau đó đọc và viết một số vị trí bộ nhớ. Tìm hiểu cách sử dụng ngăn xếp, thực hiện cuộc gọi, v.v. Sau đó viết ứng dụng của bạn vào C hoặc bất kỳ thứ gì và sử dụng asm để điều chỉnh tay hoặc sử dụng kỹ năng asm của bạn để gỡ lỗi trình biên dịch và hoặc mã. Viết ứng dụng hoặc hệ điều hành, v.v ... trong asm là dành cho những người muốn đưa ra tuyên bố, hoặc có lý do cụ thể, không vì mục đích giáo dục.

Cho một vài phút hoặc có thể nửa giờ, không mất nhiều thời gian để vượt qua, có thể là một buổi tối nếu bạn nghiêm túc về điều đó.

http://github.com/dwelch67/lsasim xem tệp learnasm.txt.

Đó là mã nguồn mở miễn phí, hoạt động ở hầu hết mọi nơi (linux, unix, windows, vv với trình biên dịch C), nếu bạn chưa là lập trình viên và không có công cụ biên dịch cơ bản hoặc kỹ năng lập trình vài ngôn ngữ (kiểm tra python cách cứng http://learnpythonthehardway.org/), C tất nhiên, và trở lại làm việc trên assembler. Điều lsasim ở trên là KHÔNG AN ARM, nhưng có rất nhiều tính năng quen thuộc. Hãy cho tôi biết làm thế nào tốt hay xấu của một công việc tôi đã làm.

Bây giờ này LÀ ARM nhưng các tập lệnh ngón tay cái:

https://github.com/dwelch67/thumbulator

Không phải là một hướng dẫn, nhưng một đơn giản, đơn giản, hướng dẫn thiết lập mô phỏng. Nó sẽ được rõ ràng những gì đang xảy ra trong giả lập bạn có thể thêm/sửa đổi/in bất cứ điều gì bạn muốn xem để giúp gỡ lỗi. Bạn có thể làm cho bàn chân của bạn ướt với nhúng, ngón tay cái, vỏ não giống như, thanh ghi ARM, sử dụng gcc, gnu assembler, và/hoặc llvm clang làm trình biên dịch chéo. Lấy một trong các ví dụ như sau đó bắt đầu sửa đổi nó.

Có một số nghiêng về phía ngôn ngữ lắp ráp ARM thống nhất hoạt động cả trên lõi dựa trên ARM và lõi dựa trên thumb2. Không phải cho tất cả ngôn ngữ lắp ráp cần thiết nhưng đối với những nơi mà bạn có thể muốn viết một mô-đun mã và không cần phải có rất nhiều nếu ngón tay cái elses xả rác mã. Bạn có thể chắc chắn có được đôi chân của bạn ướt với điều đó ở đây và mất một số mã đó thẳng đến 32 bit đầy đủ hướng dẫn ARM trên một số nền tảng khác. thumbulator chỉ là ngón tay cái, tập lệnh chung giữa lõi dựa trên ARM và lõi dựa trên thumb2, về cơ bản nó là tập lệnh ARM di động, viết mã một lần, nó hoạt động trên hầu hết các lõi của chúng.

Bạn sẽ thấy tại github Tôi có một số dự án khác với các mẫu bắt đầu bằng assembly sau đó nhập mã khởi động asm dẫn vào C. Nhiều nhưng không phải tất cả dựa trên ARM. Chi phí phần cứng từ $ 10 đến $ 50 hoặc hơn. Bạn có thể xem ví dụ yagbat và nhận giả lập giả lập hình ảnh miễn phí và mô phỏng hướng dẫn sử dụng 32 bit hoặc ngón tay cái 16 bit hoặc bất cứ thứ gì, và có màn hình mô phỏng, v.v ... hoặc nếu bạn có phần cứng gameboy hoặc nds hoặc nds lite và các hộp mực bên phải bạn có thể chạy các chương trình trên phần cứng thực.

Tất cả những thứ tôi đưa ra ở đó đều dành cho mọi người học hỏi. Vượt qua nỗi sợ hãi khi thử một cái gì đó được nhúng lần đầu tiên, không biết làm thế nào để vượt qua biên dịch, vv Tôi đã học được từ nhiều ví dụ tương tự khác và tôi chỉ trả ơn.

Nếu mục tiêu của bạn là học lập trình iOS, lấy bộ hoặc bất kỳ thứ gì và học bằng bất kỳ ngôn ngữ nào mà bạn muốn học, học thành thạo, học apis, v.v. Sau đó nếu bạn thực hiện một số công cụ lắp ráp ở trên sau đó bạn có thể bắt đầu suy nghĩ về việc thực hiện các cuộc gọi đến các hàm asm hoặc assembler nội tuyến, vv, từ các chương trình iOS của bạn. Làm thế nào nhiều assembler, sự lựa chọn của bạn. Tôi sẽ không mong đợi để xem các ứng dụng được viết trong assembler cho nền tảng mà tôi sẽ thay vì tìm kiếm làm thế nào để tôi gọi mã lắp ráp này từ ứng dụng ios của tôi hoặc làm thế nào để tôi làm lắp ráp nội tuyến. (không học lắp ráp nội tuyến cho đến khi bạn đang tốt tại hội đồng thực sự).

Không có lý do gì để trả tiền để truy cập vào trình mô phỏng, có nhiều mô phỏng cánh tay ở đó, một bộ mô phỏng, tay vịn trong gdb và các địa điểm khác, số lượng tạm ứng gameboy và đồng bộ nintendo ds, v.v. , vv, vv Tất nhiên có qemu-cánh tay. có nhiều mô phỏng hơn bạn có thể sẵn sàng dành thời gian để thử, tôi khoảng 10 năm hoặc lâu hơn vào nó bản thân mình và không thử tất cả.

học lắp ráp không giống như C hoặc python hay java, tôi sẽ viết một trò chơi quét mìn để học ngôn ngữ này. Bạn đang học cơ chế di chuyển các bit xung quanh, các bước nhỏ, không viết các ứng dụng có thể sử dụng được. Ví dụ, thêm hai số 128 bit bằng bộ xử lý 16 bit là một dự án ngôn ngữ lắp ráp xứng đáng. Nhân hai số, bất kỳ kích thước nào, với một bộ xử lý không có chỉ dẫn nhân, đó là một dự án học tập kiểu lắp ráp khác. Có, tôi đồng ý rằng bạn có thể học những điều đó bằng cách gọi asm từ một ứng dụng iOS, nhưng nếu bạn chưa có bộ phát triển iOS và biết cách viết ứng dụng iOS, bạn có rất nhiều việc cần làm trước khi bắt đầu nghĩ về assembly.

Nếu tôi rời khỏi điểm với những gì bạn đang hỏi, không có vấn đề gì tôi sẽ sẵn sàng xóa câu trả lời này ...

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