15-213/18-243 Introduction to Computer Systems: Frequently Asked Questions
Table of Contents
- How can I get help in 15-213?:
We're glad you asked! You can always email us at firstname.lastname@example.org, join in on
the 213 IRC chatroom (details below), or stop by office hours: every
Sunday-Thursday from 6:00-9:00pm in Wean 5207.
- How do I get into the 15-213 IRC chatroom?:
The 15-213 course staff maintain an IRC chatroom to provide instant help
to students. You can join by going here entering a
username, and clicking on "Connect". Alternatively, if you'd like to use your
own IRC client you can join to ##213 on irc.freenode.net .
- For float_f2i do we round or truncate?
Truncate! Example: uf = 5/8 ==> int = 0.
uf = 1.9 ==> int = 1.
uf = -1.9 ==> int = -1.
- Can I use operators like '/' and '*' in the floating point questions?
Yes, you can! As long as you are operating on integer
- Can I use constants larger than 255 in the floating point questions?
Yes, you can!
- What does the "movsql" instruction do?
It moves a sign extended long (32 bits) to a quad (64 bits).
A similar instruction, movzlq does the same thing but doesn't sign
extend the long.
movslq S, R is the equivalent of R = SignExtend(S) where R is 64 bits
and S is 32 bits.
- What does the "ja" instruction do?
It stands for jump above. It is the unsigned version of the jg
- How do I do X, Y, and Z in GDB?
Use the reference guides that are linked to in the resources page
of the course website!
- What does sscanf do?
sscanf basically scans a given string and pulls out values based on a
given format and stores the values into given variables.
It also returns
the number of values which were scanned successfully.
For example, sscanf("1 2 3", "%d %d %c", &a, &b, &c); stores
1 into a, 2 into b, and the number 51(the ascii value of 3) into c. It then also returns 3.
More info can be found by typing "man scanf" in a terminal.
- What does "nop" and "data16" do?
"data16" means "16 bits of data that the disaassembler can't parse
as an instruction"
"nop" means "no operation" All it does is
advance the instruction pointer to the next instruction.
- How do I print out a string in GDB?
The command "x/s ADDR" will print out the string which is pointed to by ADDR.
Example: x/s 0x503eaf0 will print out the string that starts at address 0x503eaf0.
- The lab documentation states that "Returning anywhere except for the
very beginning of any function is considered an invalid submission and will
receive zero points". But what about the dynamite and nitro stages where we
must return back to test? :
It is acceptable to return back to the original return address from the
test function. That is: When the getbuf function is called, you may return back
to the return address that is pushed onto the stack. You may not however, jump
past the stack smashing check, or the test of the return value from getbufn.