精華區beta ASM 關於我們 聯絡資訊
※ 引述《xinu (xinu)》之銘言: : 標題: Re: [問題] 請問一下有關Ubuntu下的MIPS : 時間: Thu Mar 27 01:39:27 2008 : : ※ 引述《bizkit (有點期待)》之銘言: : : ※ 引述《king19880326 (OK的啦~我都可以接受)》之銘言: : : : 我是使用Ubuntu7.10的作業系統 : : : 想試試不同寫法的c code編譯成MIPS有什麼不同 : : : 請問我該怎麼樣得到編譯後的MIPS assembly code呢@@? : : : 謝謝大家<(_ _)> : : google: cross compilation : : http://www.speedblue.org/cross_compilation/ : 除了cross compile以外, 要看組合語言還要 : objdump反組譯 : 以arm來看就是arm-linux-objdump -xDSl [executable] : 就可以看到用x86和arm在每一個source code編譯成assembly有什麼不同 : : 記得把-O設成不optimize可以清楚一點...應該是-O0 : 對了, 忘了說在gcc編譯要加-g : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.168.158.36 : ※ 編輯: xinu 來自: 218.168.158.36 (03/27 01:40) : 推 loveflames:想m起來,如果能再詳細一點說明會更好 03/27 01:47 詳細一點,舉個例子(在cygwin下): ========= source code ================== $ cat hello.c #include <stdio.h> int main(void) { printf("Hello World\n"); return 0; } ========= compiler option ================ $ gcc -g hello.c -o hello ========= objdunp 看反組譯結果 ============ $ objdump.exe -xDS hello.exe hello.exe: file format pei-i386 hello.exe architecture: i386, flags 0x0000013a: EXEC_P, HAS_DEBUG, HAS_SYMS, HAS_LOCALS, D_PAGED start address 0x00401000 Characteristics 0x107 ........ <省略,以下是main func反組譯之後> ......... int main(void) { 401050: 55 push %ebp 401051: 89 e5 mov %esp,%ebp 401053: 83 ec 08 sub $0x8,%esp 401056: 83 e4 f0 and $0xfffffff0,%esp 401059: b8 00 00 00 00 mov $0x0,%eax 40105e: 83 c0 0f add $0xf,%eax 401061: 83 c0 0f add $0xf,%eax 401064: c1 e8 04 shr $0x4,%eax 401067: c1 e0 04 shl $0x4,%eax 40106a: 89 45 fc mov %eax,0xfffffffc(%ebp) 40106d: 8b 45 fc mov 0xfffffffc(%ebp),%eax 401070: e8 1b 00 00 00 call 401090 <___chkstk> 401075: e8 a6 00 00 00 call 401120 <___main> printf("Hello World\n"); 40107a: c7 04 24 00 20 40 00 movl $0x402000,(%esp) 401081: e8 aa 00 00 00 call 401130 <_printf> return 0; 401086: b8 00 00 00 00 mov $0x0,%eax } 40108b: c9 leave 40108c: c3 ret 40108d: 90 nop 40108e: 90 nop 40108f: 90 nop -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.105.11