Top Banner
Computer Architecture and Assembly Languages Course’s web site: www.cs.bgu.ac.il/~arch121 Teaching Assistant: Or Peri Office Hours: Thursday 14-16 @ 37/-108 E-mail: perio at cs…
16

Computer Architecture and Assembly Languages

Feb 24, 2016

Download

Documents

Thành

Computer Architecture and Assembly Languages. Course’s web site: www.cs.bgu.ac.il/~arch121 Teaching Assistant: Or Peri Office Hours: Thursday 14-16 @ 37/-108 E-mail: perio at cs …. Why Assembly?. Efficiency Accessibility to system hardware Space efficiency - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computer Architecture and Assembly Languages

Computer Architecture and Assembly Languages

Course’s web site: www.cs.bgu.ac.il/~arch121

Teaching Assistant: Or PeriOffice Hours: Thursday 14-16 @ 37/-108E-mail: perio at cs…

Page 2: Computer Architecture and Assembly Languages

Why Assembly?

• Efficiency• Accessibility to system hardware• Space efficiency

• Discovering “the missing link” (good education)

Page 3: Computer Architecture and Assembly Languages

From code to Process

High-level language code(C,C)…++

Assembly code

Binary Object file(s)

Executable (app)

A running process

compiler

Linker

Loader

Page 4: Computer Architecture and Assembly Languages

NASM

• An Intel 80x86 assembly compiler• Natively for Linux – Your assignments will be checked on labs’ linux

• Available also for Windows– You may start here:

http://www.realtech-vr.com/nasm/ for more information

Page 5: Computer Architecture and Assembly Languages

How to?

• To write a code all you need is a text editor.• Assembly files ends with .s• Use NASM to compile those into .obj files• Use a linker (ld or C’s gcc) to link compiled files

into runnable files.• Execute

Page 6: Computer Architecture and Assembly Languages

Running NASMTo assemble a file, you issue a command of the form

> nasm -f <format> <filename> [-o <output>] [ -l listing]Example:> nasm -f elf mytry.s -o myelf.oIt would create myelf.o file that has elf format (executable and linkable format).We use main.c file (that is written in C language) to start our program, and sometimes also for input / output from a user. So to compile main.c with our assembly file we should execute the following command:

> gcc –m32 main.c myelf.o -o myexe.outThe -m32 option is being used to comply with 32-bit environment

It would create executable file myexe.out.In order to run it you should write its name on the command line:

> myexe.out

Page 7: Computer Architecture and Assembly Languages

For windows

• Download NASM for windows from here: http://sourceforge.net/projects/nasm/

• Install it and add the path for nasm.exe to the PATH variable.

• NOTE! Your code will be tested under linux, you must check compatibility before submission.

Page 8: Computer Architecture and Assembly Languages

Labs Linux from home (win)• Download putty• Connect to one of the university’s servers (lace/tapuz)

• From your home linux you may simply open a terminal and type:

>ssh [email protected]

Page 9: Computer Architecture and Assembly Languages

Labs Linux from home – cont.• Find an open work station here:

http://www.cs.bgu.ac.il/facilities/labs.html• Type:>ssh <workstationName>

• Congrats! You now have a live console as in the lab. You may compile, link and run your code

Page 10: Computer Architecture and Assembly Languages

hellowWorld.c

#include<stdio.h>

Int main(){printf(“hellow world!\n”);

}

Page 11: Computer Architecture and Assembly Languages

hellowWorld.sextern printfglobal main

section .texthello: db "hellow world!",10,0main:

push hello call printfpop eaxret

Page 12: Computer Architecture and Assembly Languages

printArgCnt.c

#include <stdio.h>

int main(int argc, char* argv[]){printArgc(argc);}

• An example program (mixed c and assembly code).• This one will print the amount of parameters received from

invoker

Page 13: Computer Architecture and Assembly Languages

printArgCnt.sextern printfglobal printArgc

section .texttoPrint: db "%d",10,0printArgc:

push ebpmov ebp,esp

mov eax, [ebp+8]dec eaxpush eaxpush toPrintcall printfadd esp,8

mov esp,ebppop ebpret

Page 14: Computer Architecture and Assembly Languages

Debugging

• Command-prompt debugger:– gdb• To Launch:

>gdb <progName>• To set breakpoints:

>breakpoint <label_or_offset>• To run:

>run <parameter1> <parameter2… >– Use ‘help’ to get help and master the art of

debugging.

Page 15: Computer Architecture and Assembly Languages

Debugging

• Using Eclipse:– Install cdt plugin (labs have it installed)– Project has to be a C project– Build preferences has to be altered so that auto

makefile generation is off.– You need to write your own makefile

– Upon debugging, user can view the registers, memory addresses as requested etc…

Page 16: Computer Architecture and Assembly Languages

Makefile example#macro examples:ASM := nasmASM_FLAGS := -f elf -g

all: example1

example1: obj/neededFile1.o obj/neededFile2.ogcc -m32 obj/neededFile1.o obj/neededFile2.o -o bin/binaryFileName

neededFile1.o : asmFile1.s$(ASM) $(ASM_FLAGS) asmFile1.s -o neededFile1.o

neededFile2.o : asmFile2.s$(ASM) $(ASM_FLAGS) asmFile2.s -o neededFile2.o

clean:rm bij/* obj/*.o

1.Main target

2.Sub-target list

3.Sub-target

4.List of needed files

5.Command to invoke

6.A special target

7.Clean command