Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The first milliseconds...
Search
Cristian Prieto
August 31, 2015
Programming
0
24
The first milliseconds...
What happens when I run my application
Cristian Prieto
August 31, 2015
Tweet
Share
More Decks by Cristian Prieto
See All by Cristian Prieto
Docker, Containers and Cats...
cprieto
1
53
Other Decks in Programming
See All in Programming
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
Architectural Extensions
denyspoltorak
0
290
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
200
CSC307 Lecture 05
javiergs
PRO
0
500
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
Implementation Patterns
denyspoltorak
0
290
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.1k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
230
dchart: charts from deck markup
ajstarks
3
990
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
CSC307 Lecture 01
javiergs
PRO
0
690
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
230
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
36k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Design in an AI World
tapps
0
140
Designing for humans not robots
tammielis
254
26k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Optimizing for Happiness
mojombo
379
71k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Amusing Abliteration
ianozsvald
0
100
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
3.9k
Paper Plane (Part 1)
katiecoart
PRO
0
4.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
190
Transcript
The first milliseconds Or what happens before the ‘hello world’
I promise unicorns and cats
Who am I? Cristian Prieto (@cprieto)
Why? What is all about?
None
You will see… • Lot’s of unrelated cat pictures (and
maybe unicorns) • Hexadecimal notation • Debugger commands • A little of .NET code • ASSEMBLER!!!
It is simple…
The “classic” ‘Hello World’
We can compile this with GCC (the compiler)
Yay! we now have an executable!
So… the compiler generates executable code, right?
Not exactly
• Compiler: Compiles the code into assembler code • Assembler:
assemble the code into object format • Linker: Links the code with libraries • Loader: Loads the program for execution
None
• Compiler/assembler produce an object file • Object files are
consumed by the linker • The linker produces image files • An image file can be an executable, a static library or a shared (dynamic) library • The loader consumes image files
A 64 bit ELF Executable
What?! an ELF?!
Every OS has their own binary file format.
• Windows uses PE+ (which is a variant of COFF)
• MacOSX and iOS use Mach-O • Almost everything else (Linux, BSDs, Android, blah blah blah) use ELF
We will concentrate in “Windows” now
Time for history…
We had DOS…
Fitting memory…
The big jump…
PE was released for Windows NT
None
This program cannot be run in DOS mode
What about real Windows apps?
I thought this talk was about .NET
As part of the IL standard we generate PE files