COP3502: Introduction to Computer Science Yashas Shankar Program Translation
Second part of this course We will spend 4 classes on Program Translation (chapter 6 from your AE textbook) and 3 classes on Hardware (chapter 7 from your AE textbook) You need to have the textbook You won’t have to do programming on program.cs.fsu.edu (but you still have to write some assembly programs on papers) We will spend 4 classes on Ethics Textbook is optional, but you may need it to do extra credits We will also spend some times reviewing programming during this period
Extra credit There will be 4 extra credits 2 for homework 2 for quizzes For each extra credit, write a 5-page summary of one chapter from your “ethics” textbook
Alternative extra credit for homework Do the homework that you want to have your score increase Put your homework on your webpage Write a 2-page summary of one chapter in Ethics textbook and put it on your webpage 15 points will come from your homework and 10 points from the summary. Grading policy on homework part will be tougher. Your homework has to be 100% correct or you will get at least 5 points off.
Alternative extra credit for quiz Design a 10-question quiz related to the subject in the quiz that you want to increase your score. Put a “correct” answer for each question. Put your quiz & solution on your webpage Your base score will be 8 points. If your quiz is good, you will get 9 or 10. If it is bad you will get 0-7 points
Extra credit submission You have to state what each extra credit is for, e.g. for quiz#4, asg#12, etc. Normal 5-page summary extra credits Print out and hand them to me Alternative extra credits Put on your webpage (and notify me) You can start submitting your extra credit when we start “ethics for computer science” part You have to submit your extra credit before the final exam
Program translation Today lecture Binary representation & machine language
Binary representation & machine language Human language “hello my name is pitch” Machine language “ ………………0101” Machine language has only 0 and 1
How machine language work? Human: add one and two Machine: Code for ADD
Binary representation Machine only understand 0 and 1 We need to convert numbers that we understand to what machines understand (and vise versa)
How to adds two numbers in binary representation? What can you notice here?
Binary representation – power of two bits
Binary representation – power of two bits = = = 192
How to convert binary number to decimal number? = 179 = =179
How to convert decimal number to binary number? 198 = ? 198 = = = =
Hexadecimal representation DecimalBinaryHex DecimalBinaryHex A B C D E F
How to convert binary to hexadecimal (and vise versa)? = 12FC = = 2F = = 23C = = 277 2F = CA3 =
Hexadecimal representation Computer doesn’t understand it Save people a lot of writing Easier for people to understand 0, 1, 2, …………, 9, A, B, C, D, E, F
Coverting Hex to Decimal and vise versta Hex to Dec: Hex Binary Decimal Dec to Hex: Dec Binary Hex
Negative numbers in binary representation 8-bit positive numbers = {0,1,…… 255} = {0,1,…., (2 8 – 1)} 32-bit positive numbers = {0,1,……..,(2 32 – 1)} 8-bit numbers = {-128, - 127, ….. 0, 1, ….127} 32-bit numbers = {-2 31, ……. 0, 1, …… ( )}
Negative numbers in binary representation 8-bit representation: always have 8 bits Positive number: start with 0 (left-most bit) Negative number: start with 1 (left-most bit) Example:
How to represent negative number? Use 2-complement system Start from positive number Reverse all ones and zeros (the output is said to be in one- complement form) Add one to the output to get 2-complement representation Example: what is -5? 5 = Reverse = Add 1 = = 2-complement form of =
How to subtract number? Subtract = add negative number Example: 19 – 5 Start from 5 and change to -5 by 2-complement method Add 19 and -5 together More detailed example: solve19 – 5 in binary representation Add 19 and (-5) together Step 1: change 19 to binary representation Step 2: change -5 to 2-complement form Step 3: add them together Step 4: change the number back to decimal
Computation within CPU This course Accumulator based (in your textbook) Stack based (I added it) Example: C = A + B; Accumulator LoadA AddB StoreC Halt Stack PushA PushB Add PopC Halt
More on Accumulator C=A+B LoadA AddB StoreC Halt C=A+B Load128 Add129 Store130 Halt C=A+B
More on Stack C=A+B PushA PushB Add PopC Halt C=A+B Push128 Push129 Add Pop130 Halt C=A+B
More complex statement (Accumulator) Example1: E = A+(B*C) + D Accumulator LoadB MulC AddA AddD StoreE Example2: E = A+(B*C) + (D*F) Accumulator LoadB MulC AddA StoreTMP LoadD MulF AddTMP StoreE
More complex statement (stack) Example1: E = A+(B*C) + D E = ABC*+D+ Example2: E = A+(B*C) + (D*F) E = ABC*+DF*+ Stack representation PushA PushB PushC Mul Add PushD Add PopE PushA PushB PushC Mul Add PushD PushF Mul Add PopE
Stack representation What do u need to know? How to solve equations represented in stack representation How to translate stack representation to normal representation and vise versa Example: - what is the result of 234+*562-*+? Note: answer = 34 - what is 234+*562-*+ in normal representation? Note: answer = (2 * (3+4)) + (5 * (6-2)) - what is 2*3+4*5 in stack representation Note: answer = 23*45*+