CSCI 320 — A Guided Tour

yourid@wnctown:$ cd ~/NetBeansProjects/
yourid@wnctown:~/NetBeansProjects$ wget http://www.cs.unca.edu/brock/classes/Spring2016/csci320/labs/bubble/bubblesort.zip
yourid@wnctown:~/NetBeansProjects$ unzip bubblesort.zip 
yourid@wnctown:~/NetBeansProjects$ netbeans-8.1
# open, build, and run program in NetBeans project
# may need to run more that once ???
# look in files tab and open Makefile
# clean Project      More Build Commands ⇒ Clean Project
# exit NetBeans
yourid@wnctown:~/NetBeansProjects$ mkdir -p ~/csci/320/bubblesort
yourid@wnctown:~/NetBeansProjects$ ls bubblesort/
yourid@wnctown:~/NetBeansProjects$ cp bubblesort/bubble* ~/csci/320/bubblesort
yourid@wnctown:~/NetBeansProjects$ cd ~/csci/320/bubblesort
yourid@wnctown:~/csci/320/bubblesort$ emacs Makefile
# Create file shown below. You may not enjoy emacs.
# The indented lines must start with tabs.
yourid@wnctown:~/csci/320/bubblesort$ cat Makefile
CFLAGS = -std=c99 -g

all:    bubblesort

bubblesort:	bubblesort.o bubblepass.o 
	gcc $(CFLAGS) -o bubblesort bubblesort.o bubblepass.o 

bubblesort.o:	bubblesort.c bubblepass.h
	gcc $(CFLAGS) -c bubblesort.c

bubblepass.o:	bubblepass.c bubblepass.h
	gcc $(CFLAGS) -c bubblepass.c 

clean:
	rm -rf bubblesort *.o
yourid@wnctown:~/csci/320/bubblesort$ cat Makefile 
yourid@wnctown:~/csci/320/bubblesort$ make
yourid@wnctown:~/csci/320/bubblesort$ ls -l
yourid@wnctown:~/csci/320/bubblesort$ make clean
yourid@wnctown:~/csci/320/bubblesort$ ls -l
yourid@wnctown:~/csci/320/bubblesort$ make
yourid@wnctown:~/csci/320/bubblesort$ ./bubblesort 
yourid@wnctown:~/csci/320/bubblesort$ gdb bubblesort
(gdb) run
(gdb) break bubblePass
(gdb) run
(gdb) step
(gdb) 
(gdb) 
(gdb) step
(gdb) print i
(gdb) print swappedCount
(gdb) print V
(gdb) print *V
(gdb) print V[5]
(gdb) print V[6]
(gdb) print V[1000]
(gdb) backtrace
(gdb) frame 1
(gdb) p num2Sort
(gdb) frame 2
(gdb) p U
(gdb) continue
(gdb) x/10i $pc
(gdb) i r rbp
(gdb) clear bubblePass
(gdb) continue
(gdb) help
(gdb) quit
yourid@wnctown:~/csci/320/bubblesort$ emacs bubblesort.c
# make change shown below
yourid@wnctown:~/csci/320/bubblesort$ diff bubblesort.c bubblesort.c~
35,36c35
<     // bubbleSort(U, sizeof U/sizeof(int)) ; 
<     bubbleSort(U, 10000) ;
---
>     bubbleSort(U, sizeof U/sizeof(int)) ; 
yourid@wnctown:~/csci/320/bubblesort$ make
yourid@wnctown:~/csci/320/bubblesort$ ./bubblesort 
yourid@wnctown:~/csci/320/bubblesort$ ulimit -c 1000000
yourid@wnctown:~/csci/320/bubblesort$ ./bubblesort 
yourid@wnctown:~/csci/320/bubblesort$ gdb bubblesort core
(gdb) info frame
(gdb) info args
(gdb) quit
yourid@wnctown:~/csci/320/bubblesort$ rm bubblesort.c
yourid@wnctown:~/csci/320/bubblesort$ mv bubblesort.c~ bubblesort.c
yourid@wnctown:~/csci/320/bubblesort$ make clean
yourid@wnctown:~/csci/320/bubblesort$ make
yourid@wnctown:~/csci/320/bubblesort$ ./bubblesort 
yourid@wnctown:~/csci/320/bubblesort$ gcc -std=c99 -S bubblepass.c
yourid@wnctown:~/csci/320/bubblesort$ ls -l
yourid@wnctown:~/csci/320/bubblesort$ cat bubblepass.s
yourid@wnctown:~/csci/320/bubblesort$ gcc -std=c99 -S bubblepass.c
yourid@wnctown:~/csci/320/bubblesort$ ls -l bubblepass.*
yourid@wnctown:~/csci/320/bubblesort$ cat bubblepass.s
yourid@wnctown:~/csci/320/bubblesort$ make clean
yourid@wnctown:~/csci/320/bubblesort$ emacs Makefile-asm
yourid@wnctown:~/csci/320/bubblesort$ cp Makefile Makefile-asm
yourid@wnctown:~/csci/320/bubblesort$ emacs Makefile-asm
# Make the changes shown below
yourid@wnctown:~/csci/320/bubblesort$ diff Makefile Makefile-asm
11,12c11,12
< bubblepass.o:	bubblepass.c bubblepass.h
< 	gcc $(CFLAGS) -c bubblepass.c 
---
> bubblepass.o:	bubblepass.s bubblepass.h
> 	gcc $(CFLAGS) -c bubblepass.s
yourid@wnctown:~/csci/320/bubblesort$ make -f Makefile-asm
yourid@wnctown:~/csci/320/bubblesort$ ./bubblesort 
yourid@wnctown:~/csci/320/bubblesort$ mv bubblepass.s bubblepass-noOpt.s
yourid@wnctown:~/csci/320/bubblesort$ gcc -std=c99 -O2 -S -c bubblepass.c
yourid@wnctown:~/csci/320/bubblesort$ ls -l bubblepass*
yourid@wnctown:~/csci/320/bubblesort$ cat bubblepass.s
yourid@wnctown:~/csci/320/bubblesort$ make clean
yourid@wnctown:~/csci/320/bubblesort$ make -f Makefile-asm
yourid@wnctown:~/csci/320/bubblesort$ gdb bubblesort 
(gdb) break bubblePass
(gdb) run
(gdb) info registers
(gdb) up
(gdb) p V
(gdb) p num2Sort
(gdb) down
(gdb) i r rdi
(gdb) i r esi
(gdb) i r rsi
(gdb) step
(gdb) step
(gdb) step
(gdb) 
(gdb) 
(gdb)(gdb) clear bubblePass
(gdb) continue
(gdb) quit
yourid@wnctown:~/csci/320/bubblesort$ exit