Dr. José M. Reyes Álamo 1. An assembly language that is easier to understand that regular...

Preview:

Citation preview

CET 3510 - Microcomputer Systems Technology

Lecture 7 – Real AssemblyDr. José M. Reyes Álamo

1

An assembly language that is easier to understand that regular assembly

Borrow some features from high-level languages without being a high-level programming language

Supported in multiple platforms

2

High Level Assembly (HLA)

No “sugary” commands such as if, while, for .

Only jump statements and labels are available to do decisions and loops.

It is understood by the processor. Programs execute faster but are harder to

write.

Differences between HLA and Real Assembly

Under Linux, to compile a C program into assembly use the following command:◦ gcc –S myProgram.c

The gcc compiler works for both C programs (extension .c) and assembly programs (extension .s)

C Language and Assembly

Example 1

C Assembly

main(){ int x = 5;}

Assembly:.file "cases.c".text

.globl main.type main, @function

main:pushl %ebpmovl %esp, %ebpsubl $16, %espmovl $5, -4(%ebp)leaveret.size main, .-main.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section .note.GNU-stack,"",@progbits

Example 2

C Assembly

main(){ int x = 5; if(x < 0) { x++; }}

.file "cases.c"

.text.globl main

.type main, @functionmain:

pushl %ebpmovl %esp, %ebpsubl $16, %espmovl $5, -4(%ebp)cmpl $0, -4(%ebp)jns .L4addl $1, -4(%ebp)

.L4:leaveret.size main, .-main.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section .note.GNU-stack,"",@progbits

Example 3

C Assembly

main(){ int x = 5; if(x < 0) { x++; } else { x--; }}

.file "cases.c".text

.globl main.type main, @function

main:pushl %ebpmovl %esp, %ebpsubl $16, %espmovl $5, -4(%ebp)cmpl $0, -4(%ebp)jns .L2addl $1, -4(%ebp)jmp .L5

.L2:subl $1, -4(%ebp)

.L5:leaveret.size main, .-main.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section .note.GNU-stack,"",@progbits

Example 4

C Assembly

main(){ int x = 5; while (x < 10){ x++; }}

.file "cases.c"

.text.globl main

.type main, @functionmain:

pushl %ebpmovl %esp, %ebpsubl $16, %espmovl $5, -4(%ebp)jmp .L2

.L3:addl $1, -4(%ebp)

.L2:cmpl $9, -4(%ebp)jle .L3leaveret.size main, .-main.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section .note.GNU-stack,"",@progbits

Example 5

C Assembly

#include<stdio.h> main(){ printf("Hello World \n");}

.file "cases.c"

.section .rodata.LC0:

.string "Hello World "

.text.globl main

.type main, @functionmain:

pushl %ebpmovl %esp, %ebpandl $-16, %espsubl $16, %espmovl $.LC0, (%esp)call putsleaveret.size main, .-main.ident "GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section .note.GNU-stack,"",@progbits

Write a few simple programs C programs Write the same program in HLA Compile the C program into Real Assembly

gcc –S myProgram.c Compare all 3 Try to understand especially how C code is

translated to Assembly

Experiment

Computer and Processor Architecture:◦ Components of computers◦ Memory limits, register size etc.◦ Data organizations (bits, nibble, word, etc.)

Review for Midterm

HLA Syntax:◦ Commands◦ Data types◦ Standard libraries (stdlib.hhf)◦ Differences with Real Assembly Language◦ Differences with High-Level programming

languages such as C++◦ Be able to read and write HLA code◦ Labels and jumps

Review for Midterm

Number Systems (Binary, Decimal, Hexadecimal) Arithmetic◦ Conversion to/from different bases◦ Two’s complement binary◦ Representation in Hex

Review for Midterm

Logical Operations◦ AND◦ NOT◦ OR◦ XOR◦ How to use these to manipulate, insert and clear

bits

Review for Midterm

Recommended