23
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!

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

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

Page 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

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!

Page 2: 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

2

The SAPC “Big” Picture

Picoor vi mtip

ulab(OS is LINUX)

SSH CommunicationsOn PC via Internet

IBM Compatible

IBM Compatible

IBM Compatible

IBM Compatible

SAPC’s in Server Room(OS is “Tutor” not LINUX)

COM2

COM2

COM2

COM2

COM1

COM1

Reset Server

Page 3: 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

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”

Page 4: 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

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”

Page 5: 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

5

Picture of mtip “Session”ulab

mtipYou

file.lnx

Tutor

~d

Transparent Relaying of Tutor commands

Memory

SAPC

~r

Reset Server

Page 6: 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

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/UNIX Intel/SAPC

gcc i386-gcc

as i386-as (informally called “gas”)

ld i386-ld

nm i386-nm

objdump i386-objdump (alias “disas”)

Page 7: 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

7

Build for gcc Compilation

prog.i

C SourceCode

gcc -Egcc -Sgcc -cgcc -o

TranslationUnit

AssemblyCode

ObjectCode

ExecutableFile

prog.c prog.s prog.o prog

Page 8: 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

8

Build for i386-gcc Compilation

prog.i

C SourceCode

i386-gcc -Ei386-gcc -Si386-gcc -ci386-gcc -o

TranslationUnit

AssemblyCode

ObjectCode

ExecutableFile

prog.c prog.s prog.opc prog.lnx

Page 9: 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

9

Build for i386-gcc and i386-as

i386-as

AssemblyCode

ObjectCode

ExecutableFile

prog.s prog.opc prog.lnx

C SourceCode

i386-gcc -c

progc.c

i386-ld

Page 10: 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

10

Build - Symbol Table Generation

• The syms file shows the memory address assigned for each variable or source label

i386-nm

SymbolFile

ObjectCode

ExecutableFile

prog.opc prog.lnx syms

i386-nm

Page 11: 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

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

Page 12: 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

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

Page 13: 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

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. 

Page 14: 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

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)%

Page 15: 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

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.)

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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)

Page 19: 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

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

Page 20: 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

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

Page 21: 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

21

Two Different Environments• How is our program loaded into memory?

Unix/Sun SAPC

CodeData

0x00000000

0x00010000

code

data

stack

0x00020000

0xFFFFFFFF

0x003FFFFF

Reserved

Stack

0x00000000

0x00050000

0x000F0000 BIOS (ROM)

Tutor

Reserved

0x000A0000 Video Memory

0x00100000

Reserved

0xFFFFFFFF

Not Implemented

Page 22: 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

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

Page 23: 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

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