- 论坛徽章:
- 0
|
回复 11# MMMIX
我将boot.S、main.c和test.c的编译顺序调整为test.c、main.c和boot.S,整个调用过程就可以了。
但是仍然会提示 warning: cannot find entry symbol _start,当时我想_start可能是系统链接的默认入口,所以
我将入口点名字_start修改为_bootstart,重新编译仍会提示: warning: cannot find entry _bootstart!
这是为什么呢?我的链接脚本中明明指定了entry point为_bootstart,怎么会找不到呢?
反汇编代码如下:
- MTest: file format elf32-bigmips
- Disassembly of section .jcr:
- 80060000 <__JCR_END__+0x7ffa0000>:
- 80060000: 00000000 nop
- Disassembly of section .init:
- 80060004 <_init>:
- 80060004: 27bdffe0 addiu sp,sp,-32
- 80060008: afbf0014 sw ra,20(sp)
- 8006000c: 0c01802f jal 800600bc <_ftext+0x94>
- 80060010: 00000000 nop
- 80060014: 0c018078 jal 800601e0 <fa+0x28>
- 80060018: 00000000 nop
- 8006001c: 8fbf0014 lw ra,20(sp)
- 80060020: 03e00008 jr ra
- 80060024: 27bd0020 addiu sp,sp,32
- Disassembly of section .text:
- 80060028 <_ftext>:
- 80060028: 27bdfff0 addiu sp,sp,-16
- 8006002c: afbf0004 sw ra,4(sp)
- 80060030: afb00000 sw s0,0(sp)
- 80060034: 3c028006 lui v0,0x8006
- 80060038: 90430288 lbu v1,648(v0)
- 8006003c: 14600016 bnez v1,80060098 <_ftext+0x70>
- 80060040: 3c108006 lui s0,0x8006
- 80060044: 8e02026c lw v0,620(s0)
- 80060048: 8c430000 lw v1,0(v0)
- 8006004c: 50600009 beqzl v1,80060074 <_ftext+0x4c>
- 80060050: 3c020000 lui v0,0x0
- 80060054: 24420004 addiu v0,v0,4
- 80060058: 0060f809 jalr v1
- 8006005c: ae02026c sw v0,620(s0)
- 80060060: 8e02026c lw v0,620(s0)
- 80060064: 8c430000 lw v1,0(v0)
- 80060068: 1460fffb bnez v1,80060058 <_ftext+0x30>
- 8006006c: 24420004 addiu v0,v0,4
- 80060070: 3c020000 lui v0,0x0
- 80060074: 24420000 addiu v0,v0,0
- 80060078: 10400005 beqz v0,80060090 <_ftext+0x68>
- 8006007c: 24030001 li v1,1
- 80060080: 3c048006 lui a0,0x8006
- 80060084: 0c000000 jal 80000000 <object.2+0x7ff3fa88>
- 80060088: 24840270 addiu a0,a0,624
- 8006008c: 24030001 li v1,1
- 80060090: 3c028006 lui v0,0x8006
- 80060094: a0430288 sb v1,648(v0)
- 80060098: 8fbf0004 lw ra,4(sp)
- 8006009c: 8fb00000 lw s0,0(sp)
- 800600a0: 03e00008 jr ra
- 800600a4: 27bd0010 addiu sp,sp,16
- 800600a8: 27bdfff0 addiu sp,sp,-16
- 800600ac: afbf0000 sw ra,0(sp)
- 800600b0: 8fbf0000 lw ra,0(sp)
- 800600b4: 03e00008 jr ra
- 800600b8: 27bd0010 addiu sp,sp,16
- 800600bc: 3c020000 lui v0,0x0
- 800600c0: 27bdfff0 addiu sp,sp,-16
- 800600c4: 3c048006 lui a0,0x8006
- 800600c8: 3c058006 lui a1,0x8006
- 800600cc: 24420000 addiu v0,v0,0
- 800600d0: afbf0000 sw ra,0(sp)
- 800600d4: 24840270 addiu a0,a0,624
- 800600d8: 10400003 beqz v0,800600e8 <_ftext+0xc0>
- 800600dc: 24a50290 addiu a1,a1,656
- 800600e0: 0c000000 jal 80000000 <object.2+0x7ff3fa88>
- 800600e4: 00000000 nop
- 800600e8: 3c028006 lui v0,0x8006
- 800600ec: 8c430000 lw v1,0(v0)
- 800600f0: 10600007 beqz v1,80060110 <_ftext+0xe8>
- 800600f4: 24440000 addiu a0,v0,0
- 800600f8: 3c020000 lui v0,0x0
- 800600fc: 24420000 addiu v0,v0,0
- 80060100: 10400004 beqz v0,80060114 <_ftext+0xec>
- 80060104: 8fbf0000 lw ra,0(sp)
- 80060108: 0c000000 jal 80000000 <object.2+0x7ff3fa88>
- 8006010c: 00000000 nop
- 80060110: 8fbf0000 lw ra,0(sp)
- 80060114: 03e00008 jr ra
- 80060118: 27bd0010 addiu sp,sp,16
- 8006011c: 27bdfff0 addiu sp,sp,-16
- 80060120: afbf0000 sw ra,0(sp)
- 80060124: 8fbf0000 lw ra,0(sp)
- 80060128: 03e00008 jr ra
- 8006012c: 27bd0010 addiu sp,sp,16
- 80060130 <fd>:
- 80060130: 27bdfff0 addiu sp,sp,-16
- 80060134: afbe0000 sw s8,0(sp)
- 80060138: 03a0f021 move s8,sp
- 8006013c: 3c02b804 lui v0,0xb804
- 80060140: 8c420008 lw v0,8(v0)
- 80060144: 38420002 xori v0,v0,0x2
- 80060148: 3c01b804 lui at,0xb804
- 8006014c: ac220008 sw v0,8(at)
- 80060150: 3c02b804 lui v0,0xb804
- 80060154: 8c420008 lw v0,8(v0)
- 80060158: 03c0e821 move sp,s8
- 8006015c: 8fbe0000 lw s8,0(sp)
- 80060160: 03e00008 jr ra
- 80060164: 27bd0010 addiu sp,sp,16
- 80060168 <fc>:
- 80060168: 27bdfff0 addiu sp,sp,-16
- 8006016c: afbf0004 sw ra,4(sp)
- 80060170: afbe0000 sw s8,0(sp)
- 80060174: 0c01804c jal 80060130 <fd>
- 80060178: 03a0f021 move s8,sp
- 8006017c: 03c0e821 move sp,s8
- 80060180: 8fbf0004 lw ra,4(sp)
- 80060184: 8fbe0000 lw s8,0(sp)
- 80060188: 03e00008 jr ra
- 8006018c: 27bd0010 addiu sp,sp,16
- 80060190 <fb>:
- 80060190: 27bdfff0 addiu sp,sp,-16
- 80060194: afbf0004 sw ra,4(sp)
- 80060198: afbe0000 sw s8,0(sp)
- 8006019c: 0c01805a jal 80060168 <fc>
- 800601a0: 03a0f021 move s8,sp
- 800601a4: 03c0e821 move sp,s8
- 800601a8: 8fbf0004 lw ra,4(sp)
- 800601ac: 8fbe0000 lw s8,0(sp)
- 800601b0: 03e00008 jr ra
- 800601b4: 27bd0010 addiu sp,sp,16
- 800601b8 <fa>:
- 800601b8: 27bdfff0 addiu sp,sp,-16
- 800601bc: afbf0004 sw ra,4(sp)
- 800601c0: afbe0000 sw s8,0(sp)
- 800601c4: 0c018064 jal 80060190 <fb>
- 800601c8: 03a0f021 move s8,sp
- 800601cc: 03c0e821 move sp,s8
- 800601d0: 8fbf0004 lw ra,4(sp)
- 800601d4: 8fbe0000 lw s8,0(sp)
- 800601d8: 03e00008 jr ra
- 800601dc: 27bd0010 addiu sp,sp,16
- 800601e0: 27bdfff0 addiu sp,sp,-16
- 800601e4: 3c028006 lui v0,0x8006
- 800601e8: afb00000 sw s0,0(sp)
- 800601ec: 24420278 addiu v0,v0,632
- 800601f0: afbf0008 sw ra,8(sp)
- 800601f4: afb10004 sw s1,4(sp)
- 800601f8: 8c44fffc lw a0,-4(v0)
- 800601fc: 2403ffff li v1,-1
- 80060200: 10830008 beq a0,v1,80060224 <fa+0x6c>
- 80060204: 2450fffc addiu s0,v0,-4
- 80060208: 00801821 move v1,a0
- 8006020c: 2411ffff li s1,-1
- 80060210: 0060f809 jalr v1
- 80060214: 2610fffc addiu s0,s0,-4
- 80060218: 8e020000 lw v0,0(s0)
- 8006021c: 1451fffc bne v0,s1,80060210 <fa+0x58>
- 80060220: 00401821 move v1,v0
- 80060224: 8fbf0008 lw ra,8(sp)
- 80060228: 8fb10004 lw s1,4(sp)
- 8006022c: 8fb00000 lw s0,0(sp)
- 80060230: 03e00008 jr ra
- 80060234: 27bd0010 addiu sp,sp,16
- 80060238: 27bdfff0 addiu sp,sp,-16
- 8006023c: afbf0000 sw ra,0(sp)
- 80060240: 8fbf0000 lw ra,0(sp)
- 80060244: 03e00008 jr ra
- 80060248: 27bd0010 addiu sp,sp,16
- 8006024c <c_main>:
- 8006024c: 27bdfff0 addiu sp,sp,-16
- 80060250: afbf0004 sw ra,4(sp)
- 80060254: afbe0000 sw s8,0(sp)
- 80060258: 03a0f021 move s8,sp
- 8006025c: 3c02b804 lui v0,0xb804
- 80060260: 8c420000 lw v0,0(v0)
- 80060264: 34420003 ori v0,v0,0x3
- 80060268: 3c01b804 lui at,0xb804
- 8006026c: ac220000 sw v0,0(at)
- 80060270: 3c02b804 lui v0,0xb804
- 80060274: 0c01806e jal 800601b8 <fa>
- 80060278: 8c420000 lw v0,0(v0)
- 8006027c: 03c0e821 move sp,s8
- 80060280: 8fbf0004 lw ra,4(sp)
- 80060284: 8fbe0000 lw s8,0(sp)
- 80060288: 03e00008 jr ra
- 8006028c: 27bd0010 addiu sp,sp,16
- 80060290 <_bootstart>:
- 80060290: 3c1c8007 lui gp,0x8007
- 80060294: 279c82e0 addiu gp,gp,-32032
- 80060298: 3c048006 lui a0,0x8006
- 8006029c: 248422ac addiu a0,a0,8876
- 800602a0: 0080e821 move sp,a0
- 800602a4: 08018093 j 8006024c <c_main>
- 800602a8: 3c1f0000 lui ra,0x0
- Disassembly of section .fini:
- 800602ac <_fini>:
- 800602ac: 27bdffe0 addiu sp,sp,-32
- 800602b0: afbf0014 sw ra,20(sp)
- 800602b4: 0c01800a jal 80060028 <_ftext>
- 800602b8: 00000000 nop
- 800602bc: 8fbf0014 lw ra,20(sp)
- 800602c0: 03e00008 jr ra
- 800602c4: 27bd0020 addiu sp,sp,32
- Disassembly of section .data:
- 800602c8 <__dso_handle>:
- 800602c8: 00000000 nop
- 800602cc: 80060280 lb a2,640(zero)
- Disassembly of section .eh_frame:
- 800602d0 <__EH_FRAME_BEGIN__+0x7ff9fd90>:
- 800602d0: 00000000 nop
- Disassembly of section .ctors:
- 800602d4 <__CTOR_LIST__>:
- 800602d4: ffffffff sdc3 $31,-1(ra)
- 800602d8: 00000000 nop
- Disassembly of section .dtors:
- 800602dc <__DTOR_LIST__>:
- 800602dc: ffffffff sdc3 $31,-1(ra)
- 800602e0: 00000000 nop
- Disassembly of section .sdata:
- Disassembly of section .lit8:
- Disassembly of section .lit4:
复制代码 |
|