การเขียนรหัสชุดประกอบ ARM


20

หลังจากได้รับ Raspberry Pi ของฉันฉันตัดสินใจว่าฉันต้องการเรียนรู้วิธีการเขียนรหัสชุดประกอบ ARM คำถามของฉันคือฉันต้องเริ่มต้นอะไร ฉันคิดว่ามีคอมไพเลอร์ติดตั้งอยู่แล้ว แต่ฉันไม่รู้ว่ามันคืออะไร (gcc อาจ?) ความช่วยเหลือใด ๆ ที่ชื่นชม!


นี่คือหนังสือ (ฟรี) อีกเล่มเกี่ยวกับการประกอบ ARM: yurichev.com/writings/RE_for_beginners-en.pdf
Dennis Yurichev

คำตอบ:


19

ขึ้นอยู่กับจำนวนแอสเซมเบลอร์ที่คุณต้องการเขียน หากคุณต้องการเขียนตัวอย่างเล็ก ๆ ที่ฝังอยู่ในรหัส C กว่าgccแน่นอนว่าคุณกำลังมองหา ตัวอย่างของวิธีการใช้asmคำสั่งใน C ดูการอ้างอิงแบบอินไลน์ที่: ARM GCC Inline Assembler Cookbook

หากในอีกทางหนึ่งคุณต้องการเขียนมากกว่าตัวอย่างเล็ก ๆ น้อย ๆ คุณจะใช้งานแอสเซมเบลอร์แบบเต็มได้ดีกว่า นี้จะสามารถเป็นอย่างใดอย่างหนึ่งas, gasหรือทั้งสอง (นามแฝง)

และในที่สุดคุณจะต้องเรียนรู้เล็กน้อยเกี่ยวกับชุดคำสั่ง ARM : มีอ้างอิงที่มีประโยชน์ที่เป็นคู่มือ ARM1176JZF-S อ้างอิงทางเทคนิค

NB โปรดจำไว้ว่า RPi รองรับคำสั่ง armv6 เท่านั้น - ดังนั้นอย่าพยายามใช้อะไรจาก armv7

โชคดี!! :)


4

ฉันเริ่มการผจญภัยด้วยรหัสชุดประกอบ ARM เมื่อไม่นานมานี้เองและนี่คือแหล่งข้อมูลของฉัน:

  • มหาวิทยาลัยเคมบริดจ์รับการตีพิมพ์เป็นชุดที่ดีมากของบทเรียนที่นี่: เบเกอรี่ Pi มันมีเทมเพลตสำหรับระบบปฏิบัติการของคุณเองตัวอย่างโค้ดแบบสมบูรณ์สำหรับทุกบทช่วยสอนและคำแนะนำทั้งหมดเกี่ยวกับวิธีการสร้างและเรียกใช้โค้ดของคุณ
  • นอกจากนี้หนังสือเล่มนี้หนักควรจะครอบคลุมฐานทั้งหมด: ARM ระบบคู่มือนักพัฒนา

3

แม้ว่าฉันจะค่อนข้างสบายใจกับอินเตอร์เฟสบรรทัดคำสั่ง แต่ฉันไม่สามารถต้านทานความสะดวกสบายของ GUI เมื่อไม่นานมานี้ฉันค้นพบว่าฉันสามารถใช้ CodeBlocks IDE เพื่อพัฒนาโปรแกรมภาษาแอสเซมบลี ARM ใน Raspberry Pi ดังนั้นฉันจึงเขียนการสอนและผนวกเข้ากับการสอนการเขียนโปรแกรมการประกอบชุด Raspberry Pi ฉันได้เขียนสำหรับเว็บไซต์หนังสือของแอสเซมบลี Mazidi ARM:

http://www.microdigitaled.com/ARM/ARM_ASM_books.htm

ที่เว็บไซต์คลิกที่ลิงค์ "การเขียนโปรแกรม ARM Assembly โดยใช้ Raspberry Pi GUI"

หวังว่านี่จะช่วยได้


1

โดยค่าเริ่มต้นจะติดตั้ง GCC หากคุณเป็นคนใหม่สำหรับ Raspberry Pi ฉันขอแนะนำให้คุณดูภาษาการเขียนโปรแกรมที่ง่ายกว่าชุดประกอบ ARM ไม่มี IDEs ใด ๆ สำหรับการประกอบดังนั้นคุณจะต้องใช้โปรแกรมแก้ไขข้อความและประกอบผ่านเทอร์มินัล ฉันแนะนำ Gedit เพื่อความสะดวกในการใช้งาน แม้ว่าจะต้องเน้นเรื่องซินแทกซ์สำหรับแอสเซมบลี แต่ฉันต้องไปที่ github หน้าของ Shinyquagsire23 โดยเฉพาะ มันสวยมาก สำหรับความช่วยเหลือทรัพยากรที่ดีที่สุดที่ฉันพบคือ "ภาษาแอสเซมบลีของ Raspberry Pi: Raspbian Beginners" โดย Bruce Smith คุณสามารถค้นหาได้ใน Amazon เขาอธิบายการชุมนุมด้วยวิธีที่ชัดเจนและเรียบง่ายที่สุดวิธีหนึ่งที่ฉันได้พบ


1

เรียนรู้ด้วยตัวอย่างที่ทำงานได้

ฉันกำลังทำงานกับ: https://github.com/cirosantilli/arm-assembly-cheat

คุณสมบัติ:

  • แอสเซมบลีที่เหมือนกันที่แน่นอนสามารถเรียกใช้บนโฮสต์ Linux ด้วยโหมดผู้ใช้ QEMU ดังนั้นคุณสามารถลองสิ่งต่าง ๆ ได้เร็วขึ้นบนโฮสต์ของคุณก่อนที่จะไปอยู่บน Pi
  • ครอบคลุมทั้ง ARMv7 และ ARMv8
  • ติดตั้ง GDB ที่ดีนอกกรอบทั้งบนโฮสต์และเนทีฟ
  • มีการยืนยันที่แสดงหมายเลขบรรทัดการประกอบเมื่อสิ่งต่าง ๆ ล้มเหลว
  • ใช้ไลบรารีมาตรฐาน C สำหรับ IO ซึ่งทำให้เป็นระบบปฏิบัติการแบบพกพาในทางทฤษฎีและอนุญาตให้ใช้สารพัดเช่นprintfและmemcpy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.