2018-2019-1 20165228 "Fundamentals of Information Security system design" the third week of learning summary of the Learning Content Summary program machine-level representation: Two important abstractions of computer systems
- ISA (Instruction set architecture): Instruction set architecture, machine-level program format and behavior. Defines the format of the processor status directives and the effect of each instruction on the state.
The memory address used by the machine-level program is a virtual address, and the provided memory model looks like a very large byte array. The actual performance of the memory system is to combine multiple hardware memory and operating system software.
Assembly code and its characteristics
- Direct processor-oriented programming language. The compiler translates the C language code into the basic instructions that the processor executes, and the assembly language is very close to the machine code.
Features: readability compared to machine code for better text format representation
X86-64 directive
- Instruction length: 1 to 15 bytes
Instruction format: OPER [DEST [, SRC]]; note
How to get the assembler code for C language code
- Run the GCC compiler to produce a compilation file code.s
gcc -Og -S code.c//-Og表示优化程度,比如-01表示使用第一级优化,优化的级别与编译时间和最终产生代码的形式都有关系。
- With the-C command option, GCC compiles and assembles the code to get CODE.O
gcc -c code.c
objdump -d code.o
Processor:
- Program Processor: Just the address of the next instruction to be executed in memory
- Integer Register: Contains 16 named locations, each of which stores 64-bit values. Can be used to record certain file states or to hold temporary values.
- Stripe Register: Holds state information for the most recently executed arithmetic or logical instruction.
Floating-point registers: A set of vector registers can hold one or more certificates or floating-point values.
General purpose register of the processor
The central processing unit (CPU) of the x86-64 contains a set of 16 common purpose registers that store 64-bit values
Assembly Instructions
- MOV class instruction: The value of the source operand is copied into the destination operand.
- Movb Transfer bytes
- MOVW Transfer Word
- MOVVL Transmission Double Word
- Movz 0 Extension
- Unary operation
- INC plus a
- DEC minus One
- NEG take negative
- Not take compensation
- Binary operation
- Add Plus
- SUB minus
- Imul Multiply
- Xor different or
- OR OR
- And and
- Control
Condition code
``` CF:进位标志 ZF:零标志 SF:符号标志 OF:溢出标志 ```
Loop (while, for)
C语言do-while循环:
do body-statement while(test-expr);
loop: body-statement t = test-expr; if(t) goto loop;
Addressing mode
- Immediate number addressing: the operand is given directly in the instruction, only for the source operand and the length of the data should match the length of the destination operand.
- Register Addressing: The number is placed in the internal registers of the CPU, the source operand and the length of the destination operand should be the same.
-
Memory addressing: The operand is stored in memory and the instruction gives the offset address information for the operand.
procedure
- a specified set of parameters and an optional return value to implement a function.
- Form: Functions, methods, subroutines, handler functions, and so on.
- Machine-level support mechanisms required for implementation
- delivery control
- pass data
-
Allocate and free memory
allocate and free memory local storage on
- stack
-
Register The local storage space in the
stack frame : A process activity record is a data structure used by the compiler to implement a procedure/function call. Logically, the stack frame is a function of the yellow essence: function parameters, functions of local variables, functions after the execution of the return to where and so on.
extended by : The stack is extended from a high address to a low address. Each invocation of each function has its own stack frame, which maintains all the necessary information. Register EBP points to the point of the current stack frame (high address), register ESP points to the top of the current stack frame (low address).
Heterogeneous data structure
- The struct declaration of the C language creates a data type that aggregates objects that may be different types into an object. All components of the
-
Structure are stored in a contiguous region, and the pointer to the structure is the address of the first byte of the structure.
Data Alignment
-
Maintaining data alignment is more efficient for most x86-64 directives, but it does not affect the behavior of the program.
problems and resolutions in code debugging
- Problem 1:gdb Debugging Problem "No source file named File.c. Make breakpoint pending on the future shared library load? " and "no symbol table is read." Use the "file" command "
-
Problem 1 Solution: At compile time, there is no option to add-g, resulting in no debug symbols.
code-managed Learning progress bar
|
lines of code (new/cumulative) |
Blog Volume (Add/accumulate) |
Learning Time (new/cumulative) |
Important Growth |
Goal |
5000 rows |
30 Articles |
400 hours |
|
First week |
124/124 |
1/1 |
9/9 |
|
2018-2019-1 20165228 "Information Security system Design Fundamentals" Third Week study summary