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
22
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
48
Other Decks in Programming
See All in Programming
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
380
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
360
障害対応を起点としたもっといい開発と運用のサイクル作りのためにできること / Hatena Enginner Seminar #29
polamjag
0
170
新宿ダンジョンを可視化してみた
satoshi7190
2
260
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
720
Rethinking UI building strategies @ SFI 2024
letelete
0
270
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
370
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
Java 22 Overview
kishida
1
180
ONE WEDGE_company_guide
1wedge_one
0
480
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
920
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
840
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
164
13k
Rails Girls Zürich Keynote
gr2m
91
13k
Imperfection Machines: The Place of Print at Facebook
scottboms
260
12k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
A Tale of Four Properties
chriscoyier
151
22k
Design by the Numbers
sachag
274
18k
The Power of CSS Pseudo Elements
geoffreycrofte
60
5k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
104
6.6k
How to name files
jennybc
65
93k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.5k
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