原创 複習筆記-構造-繼承

#include "Class.h" #include <stdio.h> struct DateInfo { int year; int month; int day; DateInfo() { year = 2015

原创 返回值超過32位時的存儲

#include<stdio.h> __int64 Function() { __int64 x = 0x1234567890; return x; /* 使用兩個32位的寄存器返回64位的值 mov eax,dword

原创 PE:AddNewSection

DWORD AddNewSection(IN PVOID pFileBuffer, OUT PVOID* pNewFileBuffer) { PIMAGE_DOS_HEADER pDosHeader = NULL; PIM

原创 PE:copyBaseRelocation2NewSection

DWORD copyBaseRelocation2NewSection(IN PVOID pFileBuffer,OUT PVOID* pNewFileBuffer) { PIMAGE_DOS_HEADER pDosHeader

原创 反彙編——結構體作爲局部變量的傳參和返回值的本質測試

不同編譯器生成的結果不同,但本質都是通過寄存器或內存複製,本測試只是爲了瞭解結構體在作爲局部變量時的參數傳遞與返回的本質,實際使用中,最好定義爲全局變量 結構體傳參: # include<stdio.h> struct st { c

原创 彙編指令整理

1. PUSH 本質: sub esp,4 mov dword ptr ds[ESP],數據---------把數據存儲到ESP所指向的地址,也就是棧頂 2. POP 本質: mov eax,esp地址指向的值,也就是棧頂存的值 add

原创 桶排序

void Function() { int arr[8] = {2,4,5,6,3,1,2,7}; int ret[8] = {0}; int get[8] = {0}; int j =

原创 找出數組最大值

void SortArray() { int arr1[5] = { 2,5,3,1,4 }; int len = 5; int k = 0; while(k<len-1) { for (int i=0;i<len-1-k;

原创 PE:GetFunctionAddrByName

DWORD GetFunctionAddrByName(IN PVOID pFileBuffer,IN DWORD NameOfFunction) { PIMAGE_DOS_HEADER pDosHeader = NULL;

原创 數據類型

1. 整數類型分爲有符號(signed)和無符號(unsigned)兩種: char cTest = 0xFF; unsigned char cuTest = 0xFF; 總結: 1、在內存中存儲的方式完全一樣, 2、在做運算的時候

原创 參數傳遞

1、8位參數傳遞 void Function(char x,char y,char z) { } 2、16位參數傳遞

原创 GDT與LDT

轉載:https://www.cnblogs.com/hicjiajia/archive/2012/05/25/2518684.html GDT 與 LDT 很長時間沒碰組成原理和操作系統,忘得差不多了,今天學內核需要一些基礎

原创 計算機組成原理-微程序和微指令

1.一條機器指令就是一個微程序,執行機器指令需要幾個CPU週期就包含幾個微指令,即一個CPU週期整體是一個微指令,微指令包含若干微命令,微命令發送給CPU內部部件執行微操作。 點贊 4 收藏 分享

原创 參數調用約定

1、int __cdecl Plus(int a, int b) { return a+b; } push 2 push 1

原创 Cache和主存的效率計算問題

第一,看命中率的定義:CPU欲訪問的信息已經在Cache中的比率稱之爲命中率。  設程序在執行期間,Cache的命中次數是Nc,訪問主存的次數是Nm,則命中率H=Nc/(Nc+Nm) 平均訪問時間Ta = H⋅Tc+(1−H)⋅Tm.