มีหนังสือบัญญัติในชุด x86 หรือไม่? [ปิด]


25

มีหนังสือมากมายในการชุมนุม อย่างไรก็ตามพวกเขามักจะจัดการกับ ISAs ซึ่งฉันไม่สนใจเช่น MIPS หรือ ARM ฉันไม่ได้จัดการกับสถาปัตยกรรมเหล่านี้ ไม่มีเหตุผลที่ฉันจะพยายามเรียนรู้พวกเขา

แต่หนังสือประกอบ x86 ดูเหมือน ... ไม่มีอยู่จริง

สมมติว่าฉันกำลังพยายามสร้างคอมไพเลอร์ของเล่นที่สร้างไฟล์ Windows Portable Executable

มีหนังสือออกบ้างไหมว่าเป็นมาตรฐาน de-facto สำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ ในชุดประกอบ x86? หนังสือเล่มไหนที่ทำให้มันพิเศษ?


คุณมีประสบการณ์การชุมนุมเท่าไหร่? คุณเคยลองใช้ GCC โดยไม่ต้องปรับให้เหมาะสมเพื่อคอมไพล์โปรแกรม C อย่างง่ายเข้าด้วยกันแล้วทำการวิศวกรรมโค้ดกลับไปที่โปรแกรม C หรือไม่?
ไบรอัน

10
@ ไบรอัน: ฉันจะต้องรู้การชุมนุมก่อนที่จะสามารถทำเช่นนั้นได้
Billy ONeal

ฉันเห็นสำเนาชุดคำสั่ง x86 แล้ว มันมีเล่ม 2 เล่มและอาจเป็นหนังสือที่ใหญ่ที่สุดที่ฉันเคยเห็น ขอให้สนุก :)
AngryBird

2
บิลลี่, ถ้าคุณรู้ว่าไม่มีการชุมนุมเลย, พวกเขาคนใดคนหนึ่งคงจะดีพอที่จะเริ่มต้นจากแนวคิดทั่วไป แอสเซมบลีอยู่ใกล้กับสถาปัตยกรรมมากดังนั้นคำแนะนำในการประกอบจะสะท้อนการออกแบบเฉพาะสถาปัตยกรรมอย่างมาก ฉันเริ่มต้นด้วยชุดประกอบ x86 และอ่าน "ภาษาประกอบสำหรับคอมพิวเตอร์ที่ใช้ Intel" ของ Kip Irvine หนังสือเล่มนี้ถูกจับคู่กับชั้นเรียนออนไลน์ที่วิทยาลัยชุมชน ฉันไม่แน่ใจว่าคุณเป็นผู้เรียนประเภทใด แต่ฉันพบว่าคำแนะนำที่มีแนวทางดีที่สุดสำหรับการเรียนรู้
Brian

@Brian: คุณหมายถึงอะไร "คนใดคนหนึ่ง" ฉันไม่เข้าใจว่า "พวกเขา" คืออะไร - หนังสือเล่มใด? แอสเซมเบลอร์ใด ๆ ISA ใด ๆ ฉันเล่นกับแอสเซมเบลอร์ MIPS แล้ว ฉันไม่พบอะไรเลยใน x86
Billy ONeal

คำตอบ:


18

ฉันใช้ภาษาแอสเซมบลีสำหรับโปรเซสเซอร์ x86เป็นหนังสือเรียนเมื่อฉันอยู่ในวิทยาลัยและพบว่ามันเข้าใจง่ายมาก ฉันมีรุ่นที่สี่ที่เก่ากว่าและเปรียบเทียบกับรุ่นที่หกและไม่ได้สังเกตเห็นการเปลี่ยนแปลงมากนักดังนั้นคุณอาจจะได้รับสำเนาที่ถูกกว่า ผู้คนบ่นเกี่ยวกับการใช้ห้องสมุดของเขาเองสำหรับ I / O แต่เขาบอกคุณถึงวิธีการใช้วิธี "ยาก" ในบทหลัง ๆ


1
หนังสือดีมาก!
Coder

ฉันอ่านหนังสือของเออร์ไวน์รุ่นที่ 5 เมื่อมันมีชื่อว่า "ภาษาแอสเซมบลีสำหรับคอมพิวเตอร์ที่ใช้ Intel" :)
Brian

1
ฉันคิดว่านี่เป็นข้อเสนอแนะที่ไม่ดีนักเนื่องจากฉบับที่สองส่วนใหญ่เป็นฉบับเฉพาะของผู้เขียนระบบลับระดับสูง High Assembly Assembly ซึ่งเป็นรุ่น bastardized ของ C. ฉันไม่เคยอ่านรุ่นที่ตีพิมพ์ครั้งแรก รุ่น DOS ที่คุณสามารถค้นหาบนเว็บไซต์ของเขาได้ฟรีและไม่เคยมีการเผยแพร่เป็นสิ่งที่อ่านได้อย่างยอดเยี่ยม นอกจากนี้ยังใช้เวลานานกว่า 50% และไม่มีอะไรเกี่ยวกับ HLA (ซึ่งเป็นการเสียเวลาโดยรวม )
Evan Carroll

1
@EvanCarroll ฉันสับสน คุณเปลี่ยนการเชื่อมโยงไปยังหนังสือที่ไม่ถูกต้องจากนั้นวิจารณ์หนังสือที่คุณเปลี่ยนการเชื่อมโยงไป นั่นโดยไม่ตั้งใจหรือไม่?
Merlyn Morgan-Graham

1
ความผิดพลาดของฉันโดยสิ้นเชิง @ MerlynMorgan-Graham ดีสำหรับคุณทั้งในการจับมันและแก้ไขมัน
Evan Carroll

18

สถานที่ที่ชัดเจนที่ควรไปคือเว็บไซต์ของ Intel ซึ่งคุณสามารถค้นหาคู่มือการเขียนโปรแกรมและข้อมูลอ้างอิงสำหรับดาวน์โหลดซึ่งมีทุกสิ่งที่ควรทราบเกี่ยวกับสถาปัตยกรรม x86

ที่นี่: คู่มือผู้พัฒนาซอฟท์แวร์สถาปัตยกรรมซอฟต์แวร์Intel® 64 และ IA-32


9

Art of Assembly Programmingเป็นทรัพยากรที่ยอดเยี่ยมที่มีการเขียนโปรแกรม x86 ค่อนข้างน้อย

เอกสาร x64 ABIก็มีประโยชน์เช่นกัน ฉันพยายามค้นหาลิงก์ไปยังรุ่นที่อยู่ในเว็บไซต์ของ AMD แต่ฉันไม่สามารถหาได้อีกต่อไปดังนั้นฉันคิดว่าอันนี้จะต้องทำ

สิ่งที่สามารถช่วยได้บ้าง [เล็กน้อย] ในขณะที่การเรียนรู้คือแทนที่จะพยายามเขียนแอพที่สมบูรณ์ตั้งแต่เริ่มต้นในแอสเซมบลีแทนที่จะเขียนส่วนใหญ่ใน C (หรือภาษาที่คอมไพล์อื่น ๆ จริงๆ) แล้วเรียกรหัสแอสเซมบลี ที่. เมื่อคุณทำเสร็จแล้วให้ย้อนกลับเขียนโปรแกรมชุดประกอบและเรียกใช้ฟังก์ชัน C จากนั้น

แก้ไข: แก้ไขข้อผิดพลาด


1
ข้อเสนอแนะอื่น ๆ : เขียนโปรแกรมอย่างง่ายใน C, คอมไพล์ให้แอสเซมบลี, ล้างมันเพื่อให้แอสเซมเบลอร์ของคุณสามารถประกอบมัน, จากนั้นปรับปรุงเวอร์ชั่นแอสเซมบลี เป็นวิธีที่ดีในการรับฟังก์ชั่นขั้นต่ำ (อ่านจากคีย์บอร์ดเขียนไปยังคอนโซล) ได้อย่างรวดเร็ว
TMN

4

เป็นหนังสือที่ดีมากสำหรับการเรียนรู้สมัชชา x86 เป็นPentium Processor เครื่องมือเพิ่มประสิทธิภาพ ในขณะที่จุดสนใจหลักของหนังสือคือการเพิ่มประสิทธิภาพของรหัสชุดประกอบ แต่จะสอนชุดประกอบ Pentium ไปพร้อมกันและเป็นหนังสืออ้างอิงที่ดีเช่นกัน

มันยาวจากการพิมพ์ แต่ไม่ยากที่จะใช้

มันมาพร้อมกับฟลอปปี้ดิสก์ที่มี "เครื่องมือเพิ่มประสิทธิภาพรหัสประกอบ" มันไม่ได้เพิ่มประสิทธิภาพรหัสของคุณ แต่แทนที่จะสร้างรายชื่อแสดงความคิดเห็นที่ชี้ให้เห็นที่ไร้ประสิทธิภาพเช่นแผงลอยท่ออยู่

เครื่องมือที่มาพร้อมกับหนังสือเป็นรุ่นที่ จำกัด ของผลิตภัณฑ์ที่มีฟีเจอร์ที่ บริษัท ผู้เขียนเคยขาย แต่ด้วยเหตุผลที่ฉันไม่คุ้นเคยกับพวกเขามานาน ฉันไม่รู้ว่าทำไม - ฉันคิดว่าเครื่องมือดังกล่าวจะขายเช่นเค้กร้อน

โดยทั่วไปแล้ว x86 เป็นหัวข้อที่ซับซ้อนมากเนื่องจากมีหลายรุ่นที่รองรับโดยไมโครโปรเซสเซอร์รุ่นต่างๆ เมื่อคุณรู้พื้นฐานแล้วคุณจะต้องปรึกษา databooks ของ Intel หรือ AMD สำหรับชิปที่แม่นยำที่คุณกำหนดเป้าหมาย น่าเสียดายที่โค้ดที่ทำงานเร็วในซีพียูรุ่นเดียวอาจไม่เร็วเท่าชิพอื่น


ไม่ได้ไปแสดง แค่ต้องการสร้างไบนารี จะยังคงดู :)
Billy ONeal

2
คุณจะต้องเรียนรู้วิธีการใช้แอสเซมเบลอร์โดยเฉพาะไม่ใช่แค่แอสเซมบลี opcodes ผู้ประกอบแต่ละคนทำสิ่งต่างกันโดยสิ้นเชิง หากคุณกำลังจะเขียนรหัสแอสเซมบลีจำนวนมากใช้ masm ตามที่ได้รับการพัฒนาโดยคำนึงถึง coders ของมนุษย์ หากคุณเพิ่งจะเขียนตัวอย่างชุดประกอบแบบอินไลน์เล็ก ๆ คุณสามารถใช้ gcc กับ GNU เป็นชุดประกอบแบบอินไลน์ (เรียกอีกอย่างว่าก๊าซ) GNU ในฐานะ 'ไวยากรณ์แตกต่างจาก masm อย่างสิ้นเชิง ตามที่เขียนไว้สำหรับใช้เป็น back end สำหรับ gcc เพื่อทำการสร้างโค้ดที่รันได้และไม่ได้มีคุณลักษณะหลายอย่างที่ coders ของมนุษย์ต้องการ
Mike Crawford

1

ทำไมไม่ลอง Wikibook - http://en.wikibooks.org/wiki/X86_Assembly มันเป็นการเริ่มต้นที่ดีสำหรับภาษาแอสเซมบลี

บิตยากเกี่ยวกับการชุมนุมคือการตระหนักถึงความเรียบง่ายและคุณต้องอยู่กับความเรียบง่ายนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.