Reliable estimates require reliable data. The only way that you can estimate time and resources for a task is to know the time and resources required for similar tasks in the past. Each homework assignment illustrates important aspects of compiler technology and also provides an opportunity for you to develop personal baseline data for project planning.
This course deals with the problem of translating programs that are understandable to human beings into code that is understandable to a computer. In order to study this problem, you must have some understanding of the common properties of programming languages and computer architectures. You will gain a deeper insight into these topics as the course progresses, but you need to be able to discuss them intelligently before you can participate effectively.
One of the ways to measure your grasp of the material is to try to explain various aspects of languages and machines. In this assignment you are asked to give such explanations for specific features. The intent is not to test your memory, or your familiarity with a particular language or machine. Instead, we are interested in your ability to reason from descriptions in the literature, to see consequences of design decisions, and to express your conclusions clearly and convincingly.
If you have trouble understanding these question, if you don't know where to find relevant facts, or if you don't see how to frame your conclusions, please verify that you have satisfied the prerequisites for this course. You may also wish to discuss your background with the instructor in that case.
This and all subsequent homework solutions must be accompanied by a summary of your time estimates and the actual times you spent in various phases of the life cycle. To complete this summary, you need to keep a record of the time you spend on various tasks. Chapters 1 through 3 of Humphrey give an overview of the mechanics of this process. After gathering the information, enter it into the database for this course.
Lynn Carter has provided a general treatment of the personal software process and its relationship to this course. As a part of this discussion, he gives specific guidance on applying it to each of the homework problems. You should carefully read his advice for this assignment.
Answer the following questions. Feel free to consult any textbook, but remember that common languages have standard definitions and many textbook authors fail to adhere religiously to the appropriate standard when discussing the features of a language. They may feel that the standard is too complex for a student, or they may actually not be familiar with the standard themselves. Whatever the reason, the result may be misinformation.
As compiler writers, we must hold ourselves to a higher standard in order to ensure that we actually implement the defined language or clearly specify how we deviate from it. In particular, since we will be using C as our implementation language in this course, you should answer all questions about C with respect to ANSI/ISO 9899-1990. This document is available in the Engineering Library, and is permanently on reserve.
CLRL q MOVL m,r test: CMPL r,n BLSS exit SUBL2 n,r INCL q BR test exit:
Would you prefer one of these two implementations over the other? Carefully explain the reasoning behind your answer.
Complete your personal postmortem for this assignment and your personal project plan for the next assignment, and submit them via the web before class on the due date of this assignment. Your group must hand in one set of answers to the questions at the beginning of class on the due date.
|Instructor||Revision 1.7 (1998/08/12 22:56:26)|