Re: [問題] 請問一下有關Ubuntu下的MIPS
※ 引述《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
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章