Download presentation
Presentation is loading. Please wait.
Published byWarren Perry Modified over 9 years ago
1
Dr. José M. Reyes Álamo 1
2
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
3
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.
4
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)
5
CAssembly main() { int x = 5; } Assembly:.file"cases.c".text.globl main.typemain, @function main: pushl%ebp movl%esp, %ebp subl$16, %esp movl$5, -4(%ebp) leave ret.sizemain,.-main.ident"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section.note.GNU- stack,"",@progbits
6
CAssembly main() { int x = 5; if(x < 0) { x++; }.file"cases.c".text.globl main.typemain, @function main: pushl%ebp movl%esp, %ebp subl$16, %esp movl$5, -4(%ebp) cmpl$0, -4(%ebp) jns.L4 addl$1, -4(%ebp).L4: leave ret.sizemain,.-main.ident"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section.note.GNU-stack,"",@progbits
7
CAssembly main() { int x = 5; if(x < 0) { x++; } else { x--; }.file"cases.c".text.globl main.typemain, @function main: pushl%ebp movl%esp, %ebp subl$16, %esp movl$5, -4(%ebp) cmpl$0, -4(%ebp) jns.L2 addl$1, -4(%ebp) jmp.L5.L2: subl$1, -4(%ebp).L5: leave ret.sizemain,.-main.ident"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section.note.GNU-stack,"",@progbits
8
CAssembly main() { int x = 5; while (x < 10){ x++; }.file"cases.c".text.globl main.typemain, @function main: pushl%ebp movl%esp, %ebp subl$16, %esp movl$5, -4(%ebp) jmp.L2.L3: addl$1, -4(%ebp).L2: cmpl$9, -4(%ebp) jle.L3 leave ret.sizemain,.-main.ident"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section.note.GNU-stack,"",@progbits
9
CAssembly #include main() { printf("Hello World \n"); }.file"cases.c".section.rodata.LC0:.string"Hello World ".text.globl main.typemain, @function main: pushl%ebp movl%esp, %ebp andl$-16, %esp subl$16, %esp movl$.LC0, (%esp) callputs leave ret.sizemain,.-main.ident"GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5".section.note.GNU-stack,"",@progbits
10
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
11
Computer and Processor Architecture: ◦ Components of computers ◦ Memory limits, register size etc. ◦ Data organizations (bits, nibble, word, etc.)
12
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
13
Number Systems (Binary, Decimal, Hexadecimal) Arithmetic ◦ Conversion to/from different bases ◦ Two’s complement binary ◦ Representation in Hex
14
Logical Operations ◦ AND ◦ NOT ◦ OR ◦ XOR ◦ How to use these to manipulate, insert and clear bits
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.