Skip to content

Instantly share code, notes, and snippets.

@syohex
Created July 5, 2011 14:47
Show Gist options
  • Save syohex/1064971 to your computer and use it in GitHub Desktop.
Save syohex/1064971 to your computer and use it in GitHub Desktop.
RX and m32c configurations of binutils-2.21 and gcc-4.6.1
sample.o: file format elf32-m32c
Disassembly of section .text:
00000000 <_null>:
0: f3 rts
00000001 <_return_zero>:
1: d9 00 mov.w:q #0,r0
3: f3 rts
00000004 <_return_one>:
4: d9 10 mov.w:q #1,r0
6: f3 rts
00000007 <_return_intsize>:
7: d9 20 mov.w:q #2,r0
9: f3 rts
0000000a <_return_pointersize>:
a: d9 20 mov.w:q #2,r0
c: f3 rts
0000000d <_return_short>:
d: 75 c0 ee ff mov.w:g #-18,r0
11: f3 rts
00000012 <_return_long>:
12: 75 c3 ee ff mov.w:g #-18,r3
16: 75 c1 cc dd mov.w:g #-8756,r1
1a: 73 32 mov.w:g r3,r2
1c: 73 10 mov.w:g r1,r0
1e: 73 2f 00 00 mov.w:g r2,0x0
22: 73 0f 00 00 mov.w:g r0,0x0
26: f3 rts
00000027 <_return_arg1>:
27: 7c f2 02 enter #0x2
2a: 73 1b fe mov.w:g r1,-2[fb]
2d: 73 b0 fe mov.w:g -2[fb],r0
30: 7d f2 exitd
00000032 <_return_arg2>:
32: 7c f2 04 enter #0x4
35: 73 1b fe mov.w:g r1,-2[fb]
38: 73 2b fc mov.w:g r2,-4[fb]
3b: 73 b0 fc mov.w:g -4[fb],r0
3e: 7d f2 exitd
00000040 <_inc>:
40: 7c f2 02 enter #0x2
43: 73 1b fe mov.w:g r1,-2[fb]
46: c9 1b fe add.w:q #1,-2[fb]
49: 73 b0 fe mov.w:g -2[fb],r0
4c: 7d f2 exitd
0000004e <_add>:
4e: 7c f2 04 enter #0x4
51: 73 1b fe mov.w:g r1,-2[fb]
54: 73 2b fc mov.w:g r2,-4[fb]
57: 73 b0 fe mov.w:g -2[fb],r0
5a: a1 b0 fc add.w:g -4[fb],r0
5d: 7d f2 exitd
0000005f <_add3>:
5f: 7c f2 04 enter #0x4
62: 73 1b fe mov.w:g r1,-2[fb]
65: 73 2b fc mov.w:g r2,-4[fb]
68: 73 b0 fe mov.w:g -2[fb],r0
6b: a1 b0 fc add.w:g -4[fb],r0
6e: a1 b0 05 add.w:g 5[fb],r0
71: 7d f2 exitd
00000073 <_load>:
73: 7c f2 02 enter #0x2
76: 73 1b fe mov.w:g r1,-2[fb]
79: 73 b0 fe mov.w:g -2[fb],r0
7c: 73 04 mov.w:g r0,a0
7e: 73 60 mov.w:g [a0],r0
80: 7d f2 exitd
00000082 <_store>:
82: 7c f2 02 enter #0x2
85: 73 1b fe mov.w:g r1,-2[fb]
88: 73 b0 fe mov.w:g -2[fb],r0
8b: 73 04 mov.w:g r0,a0
8d: 75 c6 ff 00 mov.w:g #255,[a0]
91: 7d f2 exitd
00000093 <_load_long>:
93: 7c f2 06 enter #0x6
96: 73 1b fe mov.w:g r1,-2[fb]
99: 73 b1 fe mov.w:g -2[fb],r1
9c: 73 14 mov.w:g r1,a0
9e: 73 84 02 mov.w:g 0x2[a0],a0
a1: 73 4b fc mov.w:g a0,-4[fb]
a4: 73 14 mov.w:g r1,a0
a6: 73 61 mov.w:g [a0],r1
a8: 73 1b fa mov.w:g r1,-6[fb]
ab: 73 b2 fc mov.w:g -4[fb],r2
ae: 73 b0 fa mov.w:g -6[fb],r0
b1: 73 2f 00 00 mov.w:g r2,0x0
b5: 73 0f 00 00 mov.w:g r0,0x0
b9: 7d f2 exitd
000000bb <_store_long>:
bb: 7c f2 02 enter #0x2
be: 73 1b fe mov.w:g r1,-2[fb]
c1: 73 b0 fe mov.w:g -2[fb],r0
c4: 75 c2 dc fe mov.w:g #-292,r2
c8: 73 04 mov.w:g r0,a0
ca: 73 28 02 mov.w:g r2,0x2[a0]
cd: 73 04 mov.w:g r0,a0
cf: 75 c6 98 ba mov.w:g #-17768,[a0]
d3: 7d f2 exitd
000000d5 <_member>:
d5: 7c f2 02 enter #0x2
d8: 73 1b fe mov.w:g r1,-2[fb]
db: 73 b0 fe mov.w:g -2[fb],r0
de: d9 12 mov.w:q #1,r2
e0: 73 04 mov.w:g r0,a0
e2: 73 28 02 mov.w:g r2,0x2[a0]
e5: 73 b0 fe mov.w:g -2[fb],r0
e8: 73 04 mov.w:g r0,a0
ea: c9 44 add.w:q #4,a0
ec: 73 60 mov.w:g [a0],r0
ee: 7d f2 exitd
000000f0 <_get_global>:
f0: 73 f0 00 00 mov.w:g 0x0,r0
f4: f3 rts
000000f5 <_set_global>:
f5: 7c f2 02 enter #0x2
f8: 73 1b fe mov.w:g r1,-2[fb]
fb: 73 b0 fe mov.w:g -2[fb],r0
fe: 73 0f 00 00 mov.w:g r0,0x0
102: 7d f2 exitd
00000104 <_set_stack>:
104: 7c f2 04 enter #0x4
107: 75 cb fe fe mov.w:g #254,-2[fb]
10b: 00
10c: 75 cb fc ff mov.w:g #255,-4[fb]
110: 00
111: 7d f2 exitd
00000113 <_use_stack>:
113: 7c f2 04 enter #0x4
116: 75 cb fe fe mov.w:g #254,-2[fb]
11a: 00
11b: 75 cb fc ff mov.w:g #255,-4[fb]
11f: 00
120: 73 b2 fe mov.w:g -2[fb],r2
123: 73 b0 fc mov.w:g -4[fb],r0
126: a1 20 add.w:g r2,r0
128: 7d f2 exitd
0000012a <_call_null>:
12a: fd 00 00 00 jsr.a 0 <_null>
12e: f3 rts
0000012f <_call_simple>:
12f: 75 c1 fe 00 mov.w:g #254,r1
133: fd 00 00 00 jsr.a 0 <_null>
137: c9 10 add.w:q #1,r0
139: f3 rts
0000013a <_call_complex>:
13a: 7c f2 04 enter #0x4
13d: 73 1b fe mov.w:g r1,-2[fb]
140: 73 2b fc mov.w:g r2,-4[fb]
143: 73 b0 fc mov.w:g -4[fb],r0
146: 73 01 mov.w:g r0,r1
148: fd 00 00 00 jsr.a 0 <_null>
14c: 73 0f 00 00 mov.w:g r0,0x0
150: 73 b0 fc mov.w:g -4[fb],r0
153: 7d f2 exitd
00000155 <_call_pointer>:
155: 7c f2 04 enter #0x4
158: 73 1b fc mov.w:g r1,-4[fb]
15b: 75 cb fe d0 mov.w:g #-304,-2[fb]
15f: fe
160: 73 b2 fc mov.w:g -4[fb],r2
163: 73 b0 fe mov.w:g -2[fb],r0
166: 73 21 mov.w:g r2,r1
168: 73 04 mov.w:g r0,a0
16a: c2 push.w:s a0
16b: fd 00 00 00 jsr.a 0 <_null>
16f: 7d f2 exitd
00000171 <_condition>:
171: 7c f2 02 enter #0x2
174: 73 1b fe mov.w:g r1,-2[fb]
177: d1 0b fe cmp.w:q #0,-2[fb]
17a: 6a 0a jeq 185 <_condition+0x14>
17c: 73 b0 fe mov.w:g -2[fb],r0
17f: 73 04 mov.w:g r0,a0
181: 75 c6 0a 00 mov.w:g #10,[a0]
185: d9 00 mov.w:q #0,r0
187: 7d f2 exitd
00000189 <_loop>:
189: 7c f2 06 enter #0x6
18c: 73 1b fa mov.w:g r1,-6[fb]
18f: d9 0b fe mov.w:q #0,-2[fb]
192: d9 0b fc mov.w:q #0,-4[fb]
195: fc 00 00 00 jmp.a 0 <_null>
199: a1 bb fc fe add.w:g -4[fb],-2[fb]
19d: c9 1b fc add.w:q #1,-4[fb]
1a0: c1 bb fa fc cmp.w:g -6[fb],-4[fb]
1a4: 7d ce f3 jlt 199 <_loop+0x10>
1a7: 73 b0 fe mov.w:g -2[fb],r0
1aa: 7d f2 exitd
000001ac <_main>:
1ac: d9 00 mov.w:q #0,r0
1ae: f3 rts
1af: 04 nop
1b0: 04 nop
1b1: 04 nop
## See http://d.hatena.ne.jp/syohex/20110629/130935633
# binutils
% ../configure --target=m32c-linux-elf --prefix=/home/syohei/local/m32c --disable-nls
% make
% make install
# gcc
% ../configure --target=m32c-linux-elf --enable-languages=c --with-gmp=/usr/local \
--with-mpfr=/usr/local --with-mpc=/usr/local --with-ppl=/usr/local \
--with-cloog=/usr/local --prefix=/home/syohei/local/m32c --disable-shared --disable-threads \
--disable-nls --disable-multilib --disable-libssp --with-newlib \
--with-headers=/home/syohei/src/gcc-4.6.1/newlib/libc/include
% make
% make install
rx-sample.o: file format elf32-rx-le
Disassembly of section P:
00000000 <_null>:
0: 7e a6 push.l r6
2: ef 06 mov.l r0, r6
4: 3f 66 01 rtsd #4, r6-r6
00000007 <_return_zero>:
7: 7e aa push.l r10
9: 7e a6 push.l r6
b: ef 06 mov.l r0, r6
d: 66 0a mov.l #0, r10
f: ef a1 mov.l r10, r1
11: 7e b6 pop r6
13: 7e ba pop r10
15: 02 rts
00000016 <_return_one>:
16: 7e aa push.l r10
18: 7e a6 push.l r6
1a: ef 06 mov.l r0, r6
1c: 66 1a mov.l #1, r10
1e: ef a1 mov.l r10, r1
20: 7e b6 pop r6
22: 7e ba pop r10
24: 02 rts
00000025 <_return_intsize>:
25: 7e aa push.l r10
27: 7e a6 push.l r6
29: ef 06 mov.l r0, r6
2b: 66 4a mov.l #4, r10
2d: ef a1 mov.l r10, r1
2f: 7e b6 pop r6
31: 7e ba pop r10
33: 02 rts
00000034 <_return_pointersize>:
34: 7e aa push.l r10
36: 7e a6 push.l r6
38: ef 06 mov.l r0, r6
3a: 66 4a mov.l #4, r10
3c: ef a1 mov.l r10, r1
3e: 7e b6 pop r6
40: 7e ba pop r10
42: 02 rts
00000043 <_return_short>:
43: 7e aa push.l r10
45: 7e a6 push.l r6
47: ef 06 mov.l r0, r6
49: fb a6 ee mov.l #-18, r10
4c: df aa mov.w r10, r10
4e: ef a1 mov.l r10, r1
50: 7e b6 pop r6
52: 7e ba pop r10
54: 02 rts
00000055 <_return_long>:
55: 7e aa push.l r10
57: 7e a6 push.l r6
59: ef 06 mov.l r0, r6
5b: fb ae cc dd ee mov.l #0xffeeddcc, r10
60: ef a1 mov.l r10, r1
62: 7e b6 pop r6
64: 7e ba pop r10
66: 02 rts
00000067 <_return_arg1>:
67: 7e aa push.l r10
69: 7e a6 push.l r6
6b: 71 06 fc add #-4, r0, r6
6e: ef 60 mov.l r6, r0
70: e3 61 mov.l r1, [r6]
72: ec 6a mov.l [r6], r10
74: ef a1 mov.l r10, r1
76: 62 40 add #4, r0
78: 7e b6 pop r6
7a: 7e ba pop r10
7c: 02 rts
0000007d <_return_arg2>:
7d: 7e aa push.l r10
7f: 7e a6 push.l r6
81: 71 06 f8 add #-8, r0, r6
84: ef 60 mov.l r6, r0
86: e3 61 mov.l r1, [r6]
88: a0 6a mov.l r2, 4[r6]
8a: ed 6a 01 mov.l 4[r6], r10
8d: ef a1 mov.l r10, r1
8f: 62 80 add #8, r0
91: 7e b6 pop r6
93: 7e ba pop r10
95: 02 rts
00000096 <_inc>:
96: 7e aa push.l r10
98: 7e a6 push.l r6
9a: 71 06 fc add #-4, r0, r6
9d: ef 60 mov.l r6, r0
9f: e3 61 mov.l r1, [r6]
a1: ec 6a mov.l [r6], r10
a3: 62 1a add #1, r10
a5: e3 6a mov.l r10, [r6]
a7: ec 6a mov.l [r6], r10
a9: ef a1 mov.l r10, r1
ab: 62 40 add #4, r0
ad: 7e b6 pop r6
af: 7e ba pop r10
b1: 02 rts
000000b2 <_add>:
b2: 7e aa push.l r10
b4: 7e a6 push.l r6
b6: 71 06 f8 add #-8, r0, r6
b9: ef 60 mov.l r6, r0
bb: e3 61 mov.l r1, [r6]
bd: a0 6a mov.l r2, 4[r6]
bf: ec 6a mov.l [r6], r10
c1: 06 89 6a 01 add 4[r6].l, r10
c5: ef a1 mov.l r10, r1
c7: 62 80 add #8, r0
c9: 7e b6 pop r6
cb: 7e ba pop r10
cd: 02 rts
000000ce <_add3>:
ce: 7e aa push.l r10
d0: 7e a6 push.l r6
d2: 71 06 f4 add #-12, r0, r6
d5: ef 60 mov.l r6, r0
d7: e3 61 mov.l r1, [r6]
d9: a0 6a mov.l r2, 4[r6]
db: a0 e3 mov.l r3, 8[r6]
dd: ec 6a mov.l [r6], r10
df: 06 89 6a 01 add 4[r6].l, r10
e3: 06 89 6a 02 add 8[r6].l, r10
e7: ef a1 mov.l r10, r1
e9: 62 c0 add #12, r0
eb: 7e b6 pop r6
ed: 7e ba pop r10
ef: 02 rts
000000f0 <_load>:
f0: 7e aa push.l r10
f2: 7e a6 push.l r6
f4: 71 06 fc add #-4, r0, r6
f7: ef 60 mov.l r6, r0
f9: e3 61 mov.l r1, [r6]
fb: ec 6a mov.l [r6], r10
fd: ec aa mov.l [r10], r10
ff: ef a1 mov.l r10, r1
101: 62 40 add #4, r0
103: 7e b6 pop r6
105: 7e ba pop r10
107: 02 rts
00000108 <_store>:
108: 7e aa push.l r10
10a: 7e a6 push.l r6
10c: 71 06 fc add #-4, r0, r6
10f: ef 60 mov.l r6, r0
111: e3 61 mov.l r1, [r6]
113: ec 6a mov.l [r6], r10
115: f8 aa ff 00 mov.l #255, [r10]
119: 62 40 add #4, r0
11b: 7e b6 pop r6
11d: 7e ba pop r10
11f: 02 rts
00000120 <_load_long>:
120: 7e aa push.l r10
122: 7e a6 push.l r6
124: 71 06 fc add #-4, r0, r6
127: ef 60 mov.l r6, r0
129: e3 61 mov.l r1, [r6]
12b: ec 6a mov.l [r6], r10
12d: ec aa mov.l [r10], r10
12f: ef a1 mov.l r10, r1
131: 62 40 add #4, r0
133: 7e b6 pop r6
135: 7e ba pop r10
137: 02 rts
00000138 <_store_long>:
138: 7e aa push.l r10
13a: 7e a6 push.l r6
13c: 71 06 fc add #-4, r0, r6
13f: ef 60 mov.l r6, r0
141: e3 61 mov.l r1, [r6]
143: ec 6a mov.l [r6], r10
145: f8 a2 98 ba dc fe mov.l #0xfedcba98, [r10]
14b: 62 40 add #4, r0
14d: 7e b6 pop r6
14f: 7e ba pop r10
151: 02 rts
00000152 <_member>:
152: 7e aa push.l r10
154: 7e a6 push.l r6
156: 71 06 fc add #-4, r0, r6
159: ef 60 mov.l r6, r0
15b: e3 61 mov.l r1, [r6]
15d: ec 6a mov.l [r6], r10
15f: f9 a6 01 01 mov.l #1, 4[r10]
163: ec 6a mov.l [r6], r10
165: ed aa 02 mov.l 8[r10], r10
168: ef a1 mov.l r10, r1
16a: 62 40 add #4, r0
16c: 7e b6 pop r6
16e: 7e ba pop r10
170: 02 rts
00000171 <_get_global>:
171: 7e aa push.l r10
173: 7e a6 push.l r6
175: ef 06 mov.l r0, r6
177: fb a2 71 66 c6 12 mov.l #0x12c66671, r10
17d: ec aa mov.l [r10], r10
17f: ef a1 mov.l r10, r1
181: 7e b6 pop r6
183: 7e ba pop r10
185: 02 rts
00000186 <_set_global>:
186: 6e 6b pushm r6-r11
188: 71 06 fc add #-4, r0, r6
18b: ef 60 mov.l r6, r0
18d: e3 61 mov.l r1, [r6]
18f: fb a2 71 66 c6 12 mov.l #0x12c66671, r10
195: ec 6b mov.l [r6], r11
197: e3 ab mov.l r11, [r10]
199: 3f 6b 07 rtsd #28, r6-r11
0000019c <_set_stack>:
19c: 7e a6 push.l r6
19e: 71 06 f8 add #-8, r0, r6
1a1: ef 60 mov.l r6, r0
1a3: 3e 60 fe mov.l #254, [r6]
1a6: 3e 61 ff mov.l #255, 4[r6]
1a9: 3f 66 03 rtsd #12, r6-r6
000001ac <_use_stack>:
1ac: 6e 6b pushm r6-r11
1ae: 71 06 f8 add #-8, r0, r6
1b1: ef 60 mov.l r6, r0
1b3: 3e 60 fe mov.l #254, [r6]
1b6: 3e 61 ff mov.l #255, 4[r6]
1b9: ec 6b mov.l [r6], r11
1bb: ed 6a 01 mov.l 4[r6], r10
1be: 4b ba add r11, r10
1c0: ef a1 mov.l r10, r1
1c2: 3f 6b 08 rtsd #32, r6-r11
000001c5 <_call_null>:
1c5: 7e a6 push.l r6
1c7: ef 06 mov.l r0, r6
1c9: 05 a8 64 c6 bsr.a ffc66671 <_main+0xffc663ed>
1cd: 3f 66 01 rtsd #4, r6-r6
000001d0 <_call_simple>:
1d0: 7e aa push.l r10
1d2: 7e a6 push.l r6
1d4: ef 06 mov.l r0, r6
1d6: 75 41 fe mov.l #254, r1
1d9: 05 98 64 c6 bsr.a ffc66671 <_main+0xffc663ed>
1dd: ef 1a mov.l r1, r10
1df: 62 1a add #1, r10
1e1: ef a1 mov.l r10, r1
1e3: 7e b6 pop r6
1e5: 7e ba pop r10
1e7: 02 rts
000001e8 <_call_complex>:
1e8: 6e 6b pushm r6-r11
1ea: 71 06 f8 add #-8, r0, r6
1ed: ef 60 mov.l r6, r0
1ef: e3 61 mov.l r1, [r6]
1f1: a0 6a mov.l r2, 4[r6]
1f3: a8 69 mov.l 4[r6], r1
1f5: 05 7c 64 c6 bsr.a ffc66671 <_main+0xffc663ed>
1f9: ef 1b mov.l r1, r11
1fb: fb a2 71 66 c6 12 mov.l #0x12c66671, r10
201: e3 ab mov.l r11, [r10]
203: ed 6a 01 mov.l 4[r6], r10
206: ef a1 mov.l r10, r1
208: 3f 6b 08 rtsd #32, r6-r11
0000020b <_call_pointer>:
20b: 7e aa push.l r10
20d: 7e a6 push.l r6
20f: 71 06 f8 add #-8, r0, r6
212: ef 60 mov.l r6, r0
214: a0 69 mov.l r1, 4[r6]
216: f8 6e d0 fe 00 mov.l #0xfed0, [r6]
21b: ec 6a mov.l [r6], r10
21d: a8 69 mov.l 4[r6], r1
21f: 7f 1a jsr r10
221: ef 1a mov.l r1, r10
223: ef a1 mov.l r10, r1
225: 62 80 add #8, r0
227: 7e b6 pop r6
229: 7e ba pop r10
22b: 02 rts
0000022c <_condition>:
22c: 7e aa push.l r10
22e: 7e a6 push.l r6
230: 71 06 fc add #-4, r0, r6
233: ef 60 mov.l r6, r0
235: e3 61 mov.l r1, [r6]
237: ec 6a mov.l [r6], r10
239: 61 0a cmp #0, r10
23b: 17 beq.s 242 <_condition+0x16>
23c: ec 6a mov.l [r6], r10
23e: f8 a6 0a mov.l #10, [r10]
241: 03 nop
242: 66 0a mov.l #0, r10
244: ef a1 mov.l r10, r1
246: 62 40 add #4, r0
248: 7e b6 pop r6
24a: 7e ba pop r10
24c: 02 rts
0000024d <_loop>:
24d: 7e aa push.l r10
24f: 7e a6 push.l r6
251: 71 06 f4 add #-12, r0, r6
254: ef 60 mov.l r6, r0
256: a0 e1 mov.l r1, 8[r6]
258: 3e 60 00 mov.l #0, [r6]
25b: 3e 61 00 mov.l #0, 4[r6]
25e: 2e 12 bra.b 270 <_loop+0x23>
260: ec 6a mov.l [r6], r10
262: 06 89 6a 01 add 4[r6].l, r10
266: e3 6a mov.l r10, [r6]
268: ed 6a 01 mov.l 4[r6], r10
26b: 62 1a add #1, r10
26d: e7 6a 01 mov.l r10, 4[r6]
270: ed 6a 01 mov.l 4[r6], r10
273: 06 85 6a 02 cmp 8[r6].l, r10
277: 29 e9 blt.b 260 <_loop+0x13>
279: ec 6a mov.l [r6], r10
27b: ef a1 mov.l r10, r1
27d: 62 c0 add #12, r0
27f: 7e b6 pop r6
281: 7e ba pop r10
283: 02 rts
00000284 <_main>:
284: 7e aa push.l r10
286: 7e a6 push.l r6
288: ef 06 mov.l r0, r6
28a: 66 0a mov.l #0, r10
28c: ef a1 mov.l r10, r1
28e: 7e b6 pop r6
290: 7e ba pop r10
292: 02 rts
293: 03 nop
## See http://d.hatena.ne.jp/syohex/20110629/130935633
# binutils
% ../configure --target=rx-linux-elf --prefix=/home/syohei/local/rx --disable-nls
% make
% make install
# gcc
% ../configure --target=rx-linux-elf --enable-languages=c --with-gmp=/usr/local \
--with-mpfr=/usr/local --with-mpc=/usr/local --with-ppl=/usr/local \
--with-cloog=/usr/local --prefix=/home/syohei/local/rx --disable-shared --disable-threads \
--disable-nls --disable-multilib --disable-libssp --with-newlib \
--with-headers=/home/syohei/src/gcc-4.6.1/newlib/libc/include
% make
% make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment