CSCI341 Lecture 22, MIPS Programming: Directives, Linkers, Loaders, - - PowerPoint PPT Presentation

csci341
SMART_READER_LITE
LIVE PREVIEW

CSCI341 Lecture 22, MIPS Programming: Directives, Linkers, Loaders, - - PowerPoint PPT Presentation

CSCI341 Lecture 22, MIPS Programming: Directives, Linkers, Loaders, Memory REVIEW Assemblers understand special commands called directives Assemblers understand macro commands Assembly programs become object files


slide-1
SLIDE 1

Lecture 22, MIPS Programming: Directives, Linkers, Loaders, Memory

CSCI341

slide-2
SLIDE 2

REVIEW

  • Assemblers understand special commands called “directives”
  • Assemblers understand “macro” commands
  • Assembly programs become object files
  • Object files are structured in a specific way (six segments)
slide-3
SLIDE 3

REVIEW

Six segments.

  • bject file

header text segment data segment

relocation information

symbol table debugging info

You should have a good understanding of what these segments are for.

slide-4
SLIDE 4

ASSEMBLER DIRECTIVES

  • .data
  • .text
  • .double
  • .globl

Your new friend: .asciiz (and her brother, .ascii)

slide-5
SLIDE 5

.ASCIIZ

“Store this string in consecutive bytes in memory, and null-terminate it.”

slide-6
SLIDE 6

.ASCII

“Store this string in consecutive bytes in memory, but don’t null-terminate it.”

slide-7
SLIDE 7

EXAMPLE

.asciiz “liberty”

.byte 108, 105, 98, 101, 114, 116, 121, 0

is like...

slide-8
SLIDE 8

.BYTE CRASHES YOUR .ASCIIZ PARTY!

.byte Another directive you now know. “Store n 8-bit values in successive bytes of memory.”

slide-9
SLIDE 9

.BYTE

.byte 1, 8, 6, 7, 5, 3, 0, 9

“Store n 8-bit values in successive bytes of memory.”

.byte b1, b2, b3, b4 ..., bn

addr 1 2 3 4 5 6 7 val 1 8 6 7 5 3 9

slide-10
SLIDE 10

EXAMPLE

.asciiz “liberty”

.byte 108, 105, 98, 101, 114, 116, 121, 0

is like...

slide-11
SLIDE 11

EXAMPLE

.asciiz directives are often labeled. Why?

.data welcome: .asciiz “Welcome to the jungle!” .text # assembly code here...

“Store the string Welcome to the jungle! and remember it’s base address as welcome.”

slide-12
SLIDE 12

NULL TERMINATION

A “special” character whose ascii code is 0.

slide-13
SLIDE 13

WHY NULL-TERMINATION?

Common functions such as println or the OS syscall(8)will read your ascii data beginning with the base address until the null character is “found.”

slide-14
SLIDE 14

.ASCIIZ AND SYSCALL

  • Store a string in memory using .asciiz
  • Print the string to the screen via syscall
  • (we’ll return to this after break)

(printing a string on the console)

slide-15
SLIDE 15

LINKERS

  • Separate compilation of files (“modules”) means we’ve got to

“link” them together before execution.

  • (To resolve all unresolved labels and symbols)
slide-16
SLIDE 16

LINKERS

  • Search program libraries to find library function calls in the

program

  • Determine memory locations that each module’s instructions

will occupy, and relocate those instructions by adjusting absolute references.

  • (Remember, “the shelf may move,” so instructions

referencing something on the shelf must change.)

  • Resolve references among modules
slide-17
SLIDE 17

LINKER MISSION #1

  • Ensure the program has no undefined labels.
  • Aside: remember all those compiler warnings about unused or

“unmatched” variable references?

  • Those are symbols that were defined but never used.
slide-18
SLIDE 18

LINKER MISSION #2

  • If a program uses a library function, “extract” the function’s

code from the library and integrate it into the final executable.

  • (Keep in mind library functions may call other library

functions)

  • Continue this process until all external references are

resolved.

slide-19
SLIDE 19

LINKER MISSION #3

  • Determine the memory locations each “module” will occupy.
  • Absolute address references must be relocated.
  • Process is assisted by relocation information segment of

each module’s object file.

slide-20
SLIDE 20

LINKER COMPLETE?

  • Produces executable file.
  • Typically has same segment-format as object file, except:
  • There are no longer unresolved references
  • No relocation information is stored
slide-21
SLIDE 21

LOADING

  • Executable programs first reside on disk (secondary storage)
  • To “execute” a program means to:
  • Load the executable file into memory
  • Set the program counter to the base address of what was

just loaded

  • Go!
slide-22
SLIDE 22

LOADING (HELLO KERNEL!)

The “kernel” is the central component

  • f the operating system.

It’s the “bridge” between applications and the hardware layer. Handles system calls.

slide-23
SLIDE 23

LOADING

  • OS reads the file’s header to determine size of text and data

segments

  • Creates space in memory for the program (instructions, data

and a “workspace” or “stack”)

  • Copies instructions and data into memory
  • Copies arguments passed to the program onto the stack
  • Initializes the machine registers (sets the stack pointer)
  • Jumps to a startup routine that calls the main routine
slide-24
SLIDE 24

LOADING

  • Lastly, if main returns, the startup routine terminates the

program via an exit system call.

slide-25
SLIDE 25

AFTER BREAK:

  • Memory usage
  • Stacks
  • Procedure calling (B.6, 2.8)
slide-26
SLIDE 26
  • Reading 20
  • MIPS Assembly Language Programming
  • Chapter 4 (online)
  • Start reviewing for the midterm

HOMEWORK

yeah midterms!