Difference between revisions of "CSC231 Lab 7 2010"
(→Problem #1: Pascal's Triangle with Functions) |
(→Problem #1: Pascal's Triangle with Functions) |
||
Line 12: | Line 12: | ||
=Problem #1: Pascal's Triangle with Functions= | =Problem #1: Pascal's Triangle with Functions= | ||
+ | ==Setup== | ||
* Use the same setup as for [[CSC231 Homework 5 2010 | Homework 5]]. In particular you will need | * Use the same setup as for [[CSC231 Homework 5 2010 | Homework 5]]. In particular you will need | ||
** [[CSC231_asm_io.asm | asm_io.asm]] | ** [[CSC231_asm_io.asm | asm_io.asm]] | ||
Line 69: | Line 70: | ||
:verify that you do not get any errors (it won't print anything). | :verify that you do not get any errors (it won't print anything). | ||
+ | |||
+ | ==Approach== | ||
+ | |||
+ | * Use the top-down approach | ||
+ | |||
+ | * Pass parameters through registers first. It's simpler. | ||
+ | |||
+ | * When that works, modify your program so that it passes parameters through the stack. | ||
+ | |||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | <br /> | ||
+ | [[Category:CSC231]][[Category:C]][[Category:Asm]] |
Revision as of 08:51, 5 November 2010
--D. Thiebaut 13:37, 5 November 2010 (UTC)
Be sure to work on Grendel, since we need to be in 32-bit mode, and we need both the C-compiler and the assembler to be compatible. They are not when we work on Beowulf.
Problem #1: Pascal's Triangle with Functions
Setup
- Use the same setup as for Homework 5. In particular you will need
- asm_io.asm
- asm_io.inc
- driver.c
- lab7skel.asm , a skeleton program that will eventually contain your code
- Use a Makefile to make your executable. Call it Makefile with an uppercase M. It assumes that your assembly program is going to be called lab7.asm. If you are using a different file name, then change the PROG line in the make file.
CC = gcc
LD = gcc
NASM = nasm
CFLAGS = -c
LFLAGS =
NASMFLAGS = -f elf -F stabs
PROG = lab7
OBJS = asm_io.o $(PROG).o driver.o
default: $(PROG)
$(PROG): $(OBJS)
$(LD) $(LFLAGS) $(OBJS) -o $(PROG)
asm_io.o: asm_io.asm
$(NASM) $(NASMFLAGS) asm_io.asm
$(PROG).o: $(PROG).asm asm_io.inc
$(NASM) $(NASMFLAGS) $(PROG).asm
driver.o: driver.c
$(CC) $(CFLAGS) driver.c
clean:
rm -rf *.o *~
real_clean:
rm -rf *.o $(PROG) *~
- Note: In Makefiles, make sure that the lines that do not start at the left-most margin start with a Tab character, not a space.
- Before coding anything, verify that you have valid components for your program. At the prompt, type
make
- and you should get an executable called lab7. Run it:
./lab7
- verify that you do not get any errors (it won't print anything).
Approach
- Use the top-down approach
- Pass parameters through registers first. It's simpler.
- When that works, modify your program so that it passes parameters through the stack.