+ All Categories
Home > Documents > This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: #...

This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: #...

Date post: 16-Jul-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
168
This is CS50
Transcript
Page 1: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

This is CS50

Page 2: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 3: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 4: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 5: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 6: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 7: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 8: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

clang hello.c

./a.out

Page 9: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

clang -o hello hello.c

./hello

Page 10: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ printf("hello, world\n");}

Page 11: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 12: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 13: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 14: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 15: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 16: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 17: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 18: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

clang -o hello hello.c -lcs50

./hello

Page 19: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

make hello

./hello

Page 20: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

compiling

Page 21: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 22: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 23: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 24: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 25: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string get_string(string prompt);#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 26: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string get_string(string prompt);#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 27: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string get_string(string prompt);int printf(string format, ...);

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 28: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...string get_string(string prompt);int printf(string format, ...);...

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 29: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 30: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...string get_string(string prompt);int printf(string format, ...);...

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 31: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...main: # @main .cfi_startproc# BB#0: pushq %rbp.Ltmp0: .cfi_def_cfa_offset 16.Ltmp1: .cfi_offset %rbp, -16 movq %rsp, %rbp.Ltmp2: .cfi_def_cfa_register %rbp subq $16, %rsp xorl %eax, %eax movl %eax, %edi movabsq $.L.str, %rsi movb $0, %al callq get_string movabsq $.L.str.1, %rdi movq %rax, -8(%rbp) movq -8(%rbp), %rsi movb $0, %al callq printf ...

Page 32: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...main: # @main .cfi_startproc# BB#0: pushq %rbp.Ltmp0: .cfi_def_cfa_offset 16.Ltmp1: .cfi_offset %rbp, -16 movq %rsp, %rbp.Ltmp2: .cfi_def_cfa_register %rbp subq $16, %rsp xorl %eax, %eax movl %eax, %edi movabsq $.L.str, %rsi movb $0, %al callq get_string movabsq $.L.str.1, %rdi movq %rax, -8(%rbp) movq -8(%rbp), %rsi movb $0, %al callq printf ...

Page 33: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...main: # @main .cfi_startproc# BB#0: pushq %rbp.Ltmp0: .cfi_def_cfa_offset 16.Ltmp1: .cfi_offset %rbp, -16 movq %rsp, %rbp.Ltmp2: .cfi_def_cfa_register %rbp subq $16, %rsp xorl %eax, %eax movl %eax, %edi movabsq $.L.str, %rsi movb $0, %al callq get_string movabsq $.L.str.1, %rdi movq %rax, -8(%rbp) movq -8(%rbp), %rsi movb $0, %al callq printf ...

Page 34: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 35: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

...main: # @main .cfi_startproc# BB#0: pushq %rbp.Ltmp0: .cfi_def_cfa_offset 16.Ltmp1: .cfi_offset %rbp, -16 movq %rsp, %rbp.Ltmp2: .cfi_def_cfa_register %rbp subq $16, %rsp xorl %eax, %eax movl %eax, %edi movabsq $.L.str, %rsi movb $0, %al callq get_string movabsq $.L.str.1, %rdi movq %rax, -8(%rbp) movq -8(%rbp), %rsi movb $0, %al callq printf ...

Page 36: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100000100000011000111000000100010011100011101001000101111100000000000000000000000000000000000000000000000000000000000000000101100000000000011101000000000000000000000000000000000000100100010111111000000000000000000000000000000000000000000000000000000000000000001001000...

Page 37: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 38: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 39: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 40: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 41: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <cs50.h>#include <stdio.h>

int main(void){ string name = get_string("What's your name?\n"); printf("hello, %s\n", name);}

Page 42: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

hello.c

Page 43: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

hello.c cs50.c

Page 44: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

hello.c cs50.c stdio.c

Page 45: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

hello.c cs50.c printf.c

Page 46: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100000100000011000111000000100010011100011101001000101111100000000000000000000000000000000000000000000000000000000000000000101100000000000011101000000000000000000000000000000000000100100010111111000000000000000000000000000000000000000000000000000000000000000001001000...

cs50.c printf.c

Page 47: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100000100000011000111000000100010011100011101001000101111100000000000000000000000000000000000000000000000000000000000000000101100000000000011101000000000000000000000000000000000000100100010111111000000000000000000000000000000000000000000000000000000000000000001001000...

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000011000000000011111000000000000000010000000000000000000000001100000000001111000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000101000001100100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011100000000000000001110000000001000000000000000001110000000000000110010000000000000001000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110000100101000000000000000000000000000000000000000000000000...

printf.c

Page 48: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100000100000011000111000000100010011100011101001000101111100000000000000000000000000000000000000000000000000000000000000000101100000000000011101000000000000000000000000000000000000100100010111111000000000000000000000000000000000000000000000000000000000000000001001000...

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000011000000000011111000000000000000010000000000000000000000001100000000001111000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000101000001100100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011100000000000000001110000000001000000000000000001110000000000000110010000000000000001000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110000100101000000000000000000000000000000000000000000000000...

0010111101101100011010010110001001100011001011100111001101101111001011100011011000100000001011110111010101110011011100100010111101101100011010010110001000101111011110000011100000110110010111110011011000110100001011010110110001101001011011100111010101111000001011010110011101101110011101010010111101101100011010010110001001100011010111110110111001101111011011100111001101101000011000010111001001100101011001000010111001100001001000000010000001000001010100110101111101001110010001010100010101000100010001010100010000100000001010000010000000101111011011000110100101100010001011110111100000111000001101100101111100110110001101000010110101101100011010010110111001110101011110000010110101100111011011100111010100101111011011000110010000101101011011000110100101101110011101010111100000101101011110000011100000110110001011010011011000110100...

Page 49: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100000100000011000111000000100010011100011101001000101111100000000000000000000000000000000000000000000000000000000000000000101100000000000011101000000000000000000000000000000000000100100010111111000000000000000000000000000000000000000000000000000000000000000001001000...0111111101000101010011000100011000000010000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000011000000000011111000000000000000010000000000000000000000001100000000001111000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000101000001100100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000011100000000000000001110000000001000000000000000001110000000000000110010000000000000001000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101110000100101000000000000000000000000000000000000000000000000...0010111101101100011010010110001001100011001011100111001101101111001011100011011000100000001011110111010101110011011100100010111101101100011010010110001000101111011110000011100000110110010111110011011000110100001011010110110001101001011011100111010101111000001011010110011101101110011101010010111101101100011010010110001001100011010111110110111001101111011011100111001101101000011000010111001001100101011001000010111001100001001000000010000001000001010100110101111101001110010001010100010101000100010001010100010000100000001010000010000000101111011011000110100101100010001011110111100000111000001101100101111100110110001101000010110101101100011010010110111001110101011110000010110101100111011011100111010100101111011011000110010000101101011011000110100101101110011101010111100000101101011110000011100000110110001011010011011000110100...

Page 50: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

preprocessing

compiling

assembling

linking

Page 51: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

compiling

Page 52: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

debugging

Page 53: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 54: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 55: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50

Page 56: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50

printf

Page 57: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

CS50 IDEide.cs50.io

Page 58: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50

printf

debug50

Page 59: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50

printf

debug50

check50

Page 60: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50

printf

debug50

check50

style50

Page 61: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50 correctness

printf correctness

debug50 correctness

check50 correctness

style50 style

Page 62: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

help50 correctness

printf correctness

debug50 correctness

check50 correctness

style50 style

ddb

Page 63: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

correctness

design

style

Page 64: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

arrays

Page 65: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char 1 byte

Page 66: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char 1 byte

int 4 bytes

Page 67: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char 1 byte

int 4 bytes

float 4 bytes

Page 68: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char 1 byte

int 4 bytes

float 4 bytes

long 8 bytes

Page 69: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char 1 byte

int 4 bytes

float 4 bytes

long 8 bytes

double 8 bytes

Page 70: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

bool 1 byte

char 1 byte

int 4 bytes

float 4 bytes

long 8 bytes

double 8 bytes

Page 71: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

bool 1 byte

char 1 byte

int 4 bytes

float 4 bytes

long 8 bytes

double 8 bytes

string ? bytes

...

Page 72: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 73: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 74: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 75: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 76: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 77: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 78: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 79: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 80: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 81: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 82: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 83: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

char c1 = 'H';

char c2 = 'I';

char c3 = '!';

Page 84: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 85: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hc1

Page 86: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hc1

Ic2

Page 87: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hc1

Ic2

!c3

Page 88: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72c1

73c2

33c3

Page 89: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

01001000

c1

01001001

c2

00100001

c3

Page 90: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72c1

73c2

33c3

Page 91: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

int score1 = 72;

int score2 = 73;

int score3 = 33;

Page 92: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 93: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72score1

Page 94: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72score1

73score2

Page 95: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72score1

73score2

33score3

Page 96: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

00000000000000000000000001001000

score1

00000000000000000000000001001001

score2

00000000000000000000000000100001

score3

Page 97: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

int score1 = 72;

int score2 = 73;

int score3 = 33;

Page 98: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

int scores[3];

scores[0] = 72;

scores[1] = 73;

scores[2] = 33;

Page 99: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72scores[0]

73scores[1]

33scores[2]

Page 100: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 101: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hc1

Ic2

!c3

Page 102: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hc1

Ic2

!c3

Page 103: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hs[0]

Is[1]

!s[2]

Page 104: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string

Page 105: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string s = "HI!";

Page 106: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 107: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hs

I

!

Page 108: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hs

I

!

\0

Page 109: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Hs[0]

Is[1]

!s[2]

\0s[3]

Page 110: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string name1 = "EMMA";

string name2 = "RODRIGO";

string name3 = "BRIAN";

string name4 = "DAVID";

Page 111: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16
Page 112: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Ename1

M

M

A

\0

Page 113: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Ename1

M

M

A

\0

Rname2

O

D

R

I

G

O

\0

Page 114: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Ename1

M

M

A

\0

Rname2

O

D

R

I

G

O

\0

Bname3

R

I

A N

\0

Page 115: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Ename1

M

M

A

\0

Rname2

O

D

R

I

G

O

\0

Bname3

R

I

A N

\0

Dname4

A

V

I

D

\0

Page 116: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string names[4];

names[0] = "EMMA";

names[1] = "RODRIGO";

names[2] = "BRIAN";

names[3] = "DAVID";

Page 117: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Enames[0]

M

M

A

\0

Rnames[1]

O

D

R

I

G

O

\0

Bnames[2]

R

I

A N

\0

Dnames[3]

A

V

I

D

\0

Page 118: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

Enames[0][0]

Mnames[0][1]

Mnames[0][2]

Anames[0][3]

\0names[0][4]

Rnames[1][0]

Onames[1][1]

Dnames[1][2]

Rnames[1][3]

Inames[1][4]

Gnames[1][5]

Onames[1][6]

\0names[1][7]

Bnames[2][0]

Rnames[2][1]

Inames[2][2]

Anames[2][3]

Nnames[2][4]

\0names[2][5]

Dnames[3][0]

Anames[3][1]

Vnames[3][2]

Inames[3][3]

Dnames[3][4]

\0names[3][5]

Page 119: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

string

Page 120: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

manual pages

Page 121: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

command-line arguments

Page 122: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ ...}

Page 123: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ ...}

Page 124: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(int argc, string argv[]){ ...}

Page 125: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

exit status

Page 126: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(int argc, string argv[]){ ...}

Page 127: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(int argc, string argv[]){ ...}

Page 128: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

#include <stdio.h>

int main(void){ ...}

Page 129: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

readability

Page 130: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

"Mr. and Mrs. Dursley, of number four, Privet Drive, were proud to say that they were perfectly normal, thank you

very much. They were the last people you'd expect to be involved in anything strange or mysterious, because they

just didn't hold with such nonsense..."

Page 131: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

grade 7

Page 132: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

"In computational linguistics, authorship attribution is the task of predicting the author of a document of unknown

authorship. This task is generally performed via the analysis of stylometric features — particular characteristics of an author’s writing that can be used to identify his or her

works in contrast with the works of other authors…"

Page 133: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

grade 16

Page 134: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

cryptography

Page 135: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

input → → output

Page 136: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

plaintext → → ciphertext

Page 137: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

H I !

Page 138: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

72 73 33

Page 139: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

plaintext → → ciphertext

Page 140: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

plaintext → → ciphertextkey →

Page 141: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

plaintext → → ciphertext1 →

Page 142: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

I L O V E Y O U

Page 143: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 L O V E Y O U

Page 144: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 O V E Y O U

Page 145: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 V E Y O U

Page 146: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 86 E Y O U

Page 147: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 86 69 Y O U

Page 148: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 86 69 89 O U

Page 149: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 86 69 89 79 U

Page 150: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

73 76 79 86 69 89 79 85

Page 151: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 76 79 86 69 89 79 85

Page 152: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 79 86 69 89 79 85

Page 153: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 86 69 89 79 85

Page 154: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 87 69 89 79 85

Page 155: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 87 70 89 79 85

Page 156: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 87 70 90 79 85

Page 157: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 87 70 90 80 85

Page 158: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

74 77 80 87 70 90 80 86

Page 159: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J 77 80 87 70 90 80 86

Page 160: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M 80 87 70 90 80 86

Page 161: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P 87 70 90 80 86

Page 162: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P W 70 90 80 86

Page 163: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P W F 90 80 86

Page 164: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P W F Z 80 86

Page 165: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P W F Z P 86

Page 166: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

J M P W F Z P V

Page 168: This is CS50cdn.cs50.net/2019/fall/lectures/2/lecture2.pdf · 2019-12-31 · main: # @main.cfi_startproc # BB#0: pushq %rbp.Ltmp0:.cfi_def_cfa_offset 16.Ltmp1:.cfi_offset %rbp, -16

This is CS50


Recommended