Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dr. José M. Reyes Álamo 1.  An assembly language that is easier to understand that regular assembly  Borrow some features from high-level languages.

Similar presentations


Presentation on theme: "Dr. José M. Reyes Álamo 1.  An assembly language that is easier to understand that regular assembly  Borrow some features from high-level languages."— Presentation transcript:

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


Download ppt "Dr. José M. Reyes Álamo 1.  An assembly language that is easier to understand that regular assembly  Borrow some features from high-level languages."

Similar presentations


Ads by Google