Toolchain Micro Computer Enigneering Toolchain slide 1 Toolchain
- Slides: 16
Toolchain Micro. Computer Enigneering Toolchain slide 1
Toolchain GNU make – build utility – – Dependency-tracking Custom build-rules Parallel builds Flexible/Powerful (In use since 1977) Micro. Computer Enigneering Toolchain slide 2
Toolchain GCC – GNU Compiler Collection – – Open source Support for ~20 targets C/C++/Objective-C/Java/Fortran/Ada Very large community with several companies Micro. Computer Enigneering Toolchain slide 3
Toolchain GNU binutils – binary tools – – – as: Assembler ld: Linking object files objdump: Dumping object files addr 2 line, ar, c++filt, nm, ranlib, objcopy, etc. Usually supports more target than GCC Standard in all Linux distrubutions (almost) Micro. Computer Enigneering Toolchain slide 4
Toolchain File-formats: Text – Makefiles (Controls build-order, programs etc. ) – Sources (C, asm) – Linker-scripts (Controls memory-layout) File-formats: Binary – Object-files (Before linking) – ELF-files (After linking) Micro. Computer Enigneering Toolchain slide 5
Toolchain Micro. Computer Enigneering Toolchain slide 6
Toolchain GCC – C-Compiler – Higher level, but not too high (portable assembly) – Optimizations (O 0, O 1, O 2, O 3, etc. ) – Used in laboration 04 Micro. Computer Enigneering Toolchain slide 7
C (-O 0) const int const_global = 2; int main(void) { int local = 3; return global + local + const_global; } ASM 80020000 <main>: 80020000: 27 bdfff 0 80020004: afbe 0008 80020008: 03 a 0 f 021 8002000 c: 24020003 80020010: afc 20000 80020014: 8 f 838010 80020018: 8 fc 20000 8002001 c: 00621021 80020020: 8 f 838014 80020024: 00431021 80020028: 03 c 0 e 821 8002002 c: 8 fbe 0008 80020030: 27 bd 0010 80020034: 03 e 00008 80020038: 0000 addiu sw move li sw lw lw addu move lw addiu jr nop sp, -16 s 8, 8(sp) s 8, sp v 0, 3 v 0, 0(s 8) v 1, -32752(gp) v 0, 0(s 8) v 0, v 1, v 0 v 1, -32748(gp) v 0, v 1 sp, s 8, 8(sp) sp, 16 ra Micro. Computer Enigneering Toolchain slide 8
C (-O 1) ASM int main(void) { return 0; } 80020000 <main>: 80020000: 8 f 828010 80020004: 03 e 00008 80020008: 24420005 lw jr addiu v 0, -32752(gp) ra v 0, 5 Micro. Computer Enigneering Toolchain slide 9
C (-O 0) int loop(int arg) { int i; int sum = 0; for (i=0; i<5; i++) { sum += arg; } return sum; } ASM 80020094 <loop>: 80020094: 27 bdfff 0 80020098: afbe 0008 8002009 c: 03 a 0 f 021 800200 a 0: afc 40010 800200 a 4: afc 00004 800200 a 8: afc 00000 800200 ac: 8 fc 20000 800200 b 0: 28420005 800200 b 4: 1040000 a 800200 b 8: 0000 800200 bc: 8 fc 30004 800200 c 0: 8 fc 20010 800200 c 4: 00621021 800200 c 8: afc 20004 800200 cc: 8 fc 20000 800200 d 0: 24420001 800200 d 4: afc 20000 800200 d 8: 1000 fff 4 800200 dc: 0000 800200 e 0: 8 fc 20004 800200 e 4: 03 c 0 e 821 800200 e 8: 8 fbe 0008 800200 ec: 27 bd 0010 800200 f 0: 03 e 00008 800200 f 4: 0000 addiu sw move sw sw sw lw slti beqz nop lw lw addu sw lw addiu sw b nop lw move lw addiu jr nop sp, -16 s 8, 8(sp) s 8, sp a 0, 16(s 8) zero, 4(s 8) zero, 0(s 8) v 0, 5 v 0, 800200 e 0 <loop+0 x 4 c> v 1, 4(s 8) v 0, 16(s 8) v 0, v 1, v 0, 4(s 8) v 0, 0(s 8) v 0, 1 v 0, 0(s 8) 800200 ac <loop+0 x 18> v 0, 4(s 8) sp, s 8, 8(sp) sp, 16 ra Micro. Computer Enigneering Toolchain slide 10
C (-O 1) ASM int loop(int arg) { int i; int sum = 0; for (i=0; i<5; i++) { sum += arg; } 80020040 <loop>: 80020040: 00002821 80020044: 00001821 80020048: 24630001 8002004 c: 28620005 80020050: 1440 fffd 80020054: 00 a 42821 80020058: 03 e 00008 8002005 c: 00 a 01021 move addiu slti bnez addu jr move a 1, zero v 1, 1 v 0, v 1, 5 v 0, 80020048 <loop+0 x 8> a 1, a 0 ra v 0, a 1 return sum; } Micro. Computer Enigneering Toolchain slide 11
C (-O 2, -O 3) int loop(int arg) { int i; int sum = 0; for (i=0; i<5; i++) { sum += arg; } ASM 80020030 <loop>: 80020030: 24020004 80020034: 2442 ffff 80020038: 0441 fffe 8002003 c: 0000 80020040: 00041080 80020044: 03 e 00008 80020048: 00441021 li addiu bgez nop sll jr addu v 0, 4 v 0, -1 v 0, 80020034 <loop+0 x 4> v 0, a 0, 0 x 2 ra v 0, a 0 return sum; } Micro. Computer Enigneering Toolchain slide 12
C (-O 3 -funroll-loops) ASM int loop(int arg) { int i; int sum = 0; for (i=0; i<5; i++) { sum += arg; } 80020000 <loop>: 80020000: 00041080 80020004: 03 e 00008 80020008: 00441021 sll jr addu v 0, a 0, 0 x 2 ra v 0, a 0 return sum; } Micro. Computer Enigneering Toolchain slide 13
Toolchain Optimizations, what are they good for? – May improve code – May result in smaller code Beware! May result in code-explosion! – Usually good enough – Can't beat the programmer! Micro. Computer Enigneering Toolchain slide 14
Toolchain Linking, what is it good for? – Resolving symbols to memory location – Fundamental for modular design! Merge several object files Keep track of symbols between files Micro. Computer Enigneering Toolchain slide 15
Toolchain Micro. Computer Enigneering Toolchain slide 16
- Heel toe polka
- Arduino toolchain
- 크로스 컴파일이란
- Slide and divide method of factoring
- What is microprogram sequencer in computer architecture
- Examples of micro computers
- Micro computer features
- Csci235
- Micro computer services began operations on august 1
- Micro computer concepts
- Explain the components of computer system
- What is computer organization
- Input devices
- Basic structure of a computer system
- Difference between organisation and architecture
- Basic computer design
- Design of a basic computer