Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Homework Reading Assignment –Professional Assembly Language, pp 39-59, 62-65 MP1 –Get assignment file from my web page and study it –Make and populate.

Similar presentations


Presentation on theme: "1 Homework Reading Assignment –Professional Assembly Language, pp 39-59, 62-65 MP1 –Get assignment file from my web page and study it –Make and populate."— Presentation transcript:

1 1 Homework Reading Assignment –Professional Assembly Language, pp 39-59, 62-65 MP1 –Get assignment file from my web page and study it –Make and populate your UNIX mp1 subdirectory –Study the source code for mp1 Lab 1 –Load and Read Lab1 Write up –GO TO LAB WITH YOUR SECTION!

2 2 The SAPC “Big” Picture Pico or vi mtip ulab (OS is LINUX) SSH Communications On PC via Internet IBM Compatible SAPC’s in Server Room (OS is “Tutor” not LINUX) COM2 COM1 Reset Server

3 3 The “Big” Picture LINUX system is your “development host” SAPC is your “target machine” SAPC does not normally have its keyboard, video monitor, or mouse attached! SAPC COM1 and COM2 ports are cabled virtually to ports on the UNIX host “ulab”

4 4 The “Big” Picture You will use a UNIX system to edit your source files, compile and assemble them. You will use the UNIX system as a server for downloading code to an SAPC You may be using an SAPC –Locally in the SAPC lab via a terminal attached to one of its COM ports –Remotely via the UNIX system named “ulab”

5 5 Picture of mtip “Session” ulab mtip You file.lnx Tutor ~d Transparent Relaying of Tutor commands Memory SAPC ~r Reset Server

6 6 System Build Processes The system build processes for C and assembly source courses are driven by our make files However, it is important to understand how the component build steps work with the SW tools: Sun/UNIXIntel/SAPC gcci386-gcc asi386-as (informally called “gas”) ldi386-ld nmi386-nm objdumpi386-objdump (alias “disas”)

7 7 Build for gcc Compilation prog.i C Source Code gcc -E gcc -S gcc -c gcc -o Translation Unit Assembly Code Object Code Executable File prog.cprog.sprog.oprog

8 8 Build for i386-gcc Compilation prog.i C Source Code i386-gcc -E i386-gcc -S i386-gcc -c i386-gcc -o Translation Unit Assembly Code Object Code Executable File prog.cprog.sprog.opcprog.lnx

9 9 Build for i386-gcc and i386-as i386-as Assembly Code Object Code Executable File prog.sprog.opcprog.lnx C Source Code i386-gcc -c progc.c i386-ld

10 10 Build - Symbol Table Generation The syms file shows the memory address assigned for each variable or source label i386-nm Symbol File Object Code Executable File prog.opcprog.lnxsyms i386-nm

11 11 Example: Test Program Login to UNIX host “ulab” instead of “users” We will compile and run a program named test.c on both Unix and an SAPC –Produce UNIX executable –Run it using./test –Produce SAPC executable (.lnx extension) –Download to the SAPC –Run it –Exit from the SAPC

12 12 Setup Test files on Unix Make a subdirectory “test” on your cs341 Copy these files to that directory –$pcex/makefile –$pcex/test.c Note the name $pcex is defined by the ulab module in your.cshrc file. If you can’t use $pcex as a directory name, check your ulab module configuration in.cshrc

13 13 Running test program on UNIX Create the UNIX executable “test” ulab(60)% gcc –o test test.c Execute it (avoiding conflict with UNIX “test”) ulab(61)%./test Follow the program’s directions. It should finish up quickly and hand control back to UNIX. You will see a UNIX prompt again.

14 14 Running a program on SAPC Make the SAPC executable, test.lnx. ulab(65)% make C=test test.lnx –The suffix “.lnx” is short for Linux, since we are using a Linux-defined executable format Must be logged in on host ulab to use mtip –Otherwise, we get an error message: blade64(9)% mtip -f test.lnx... Sorry, no board currently available blade64(10)%

15 15 Running a program on SAPC Execute mtip to access an SAPC ulab(66)% mtip -f test.lnx Obtains an SAPC for you and tells mtip the executable file you are planning to download When you get an SAPC assigned, hit CR to get its Tutor prompt. It’s safest to use ~r to reboot the SAPC which takes about 12 seconds. (If an SAPC ever starts working weirdly, you should reboot it.)

16 16 Running a program on SAPC Type “~d” to download test.lnx To execute the program, when you see the Tutor prompt again, type Tutor> go 100100 Follow the program’s directions. It should finish up quickly and hand control back to Tutor. You will see Tutor prompt again. You can run it again by command “go 100100”. Type “~q” or two ctrl-Cs to quit out of mtip

17 17 Analysis of Example For UNIX or SAPCs, basic process to develop programs is the same - only different in the details “Cross-compilation” is defined as the compilation of a program on one computer (Sun development host) for execution on another computer (SAPC target machine) –We used gcc to generate an executable file that will run on the Sun-based UNIX system –We used i386-gcc to generate an executable file that would NOT run on UNIX but will run on an SAPC

18 18 Analysis of Example Portability –Defined as ability to write source code so that it can run on two or more types of machines –Requires use of a different compiler/loader and library for each type of machine Notice that the library functions called by the test program worked slightly differently on the two types of machines (as noted in the text produced by the test program)

19 19 Analysis of Example Another difference between the Unix system and the SAPC is the presence/ absence of an operating system –UNIX is an operating system that runs programs in a protected environment. Our code can not do some things such as access hardware directly –Tutor is a debug monitor only and does not run programs in a protected environment. Our code can access hardware directly as you’ll see later

20 20 Machine Project 1 In mp1, you will add commands to a program that is a simple version of the Tutor program that we just used on the SAPC The program is “portable” so that it can be run on both the UNIX system and an SAPC You will learn about some things about the differences between the UNIX environment and the SAPC environment

21 21 Two Different Environments How is our program loaded into memory? Unix/SunSAPC Code Data 0x00000000 0x00010000 code data stack 0x00020000 0x FFFFFFFF 0x003 FFFFF Reserved Stack 0x00000000 0x00050000 0x000F0000 BIOS (ROM) Tutor Reserved 0x000A0000 Video Memory 0x00100000 Reserved 0x FFFFFFFF Not Implemented

22 22 Machine Project 1 Key to understanding “tutor” is a struct: typedef struct { char *cmdtoken; /* char string to invoke cmd */ int (*cmdfn)(); /* function to call for this cmd */ char *help; /* helpstring for cmd */ } cmd; cmd *cmdtoken *help ‘m’ ‘d’ ‘\0’ (*cmdfn) ( ) ‘h’ ‘e’ ‘l’ ‘p’ ‘ ’ ‘t’ ‘e’ ‘x’ ‘t’ ‘\0’ Function to process command

23 23 Machine Project 1 Your job entails –Replacing the stub for the md command to: Convert the character string to an integer Use that integer as an address (a pointer to memory) Find the contents of that address Display the contents of that address to the terminal –Adding commands to the command table and writing code to make both of them work Memory Set - ms Help - h


Download ppt "1 Homework Reading Assignment –Professional Assembly Language, pp 39-59, 62-65 MP1 –Get assignment file from my web page and study it –Make and populate."

Similar presentations


Ads by Google