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