C语言16 取值运算符

“*”的几种用途乘法运算符int x = 1;int y = 2;int z = x * y;定义新的类型char x;char* x;取值运算符指针类型的变量int* a =(int*)1;printf("%x \n",(a +1));10: int a =(int


C语言9 数组

数组的定义数组定义的格式:数据类型 变量名[常亮]; //为什么不能使变量?//因为在声明的时候 编译器需要知道数组的长度,分配相应大小的内存数组的初始化方式1:int arr[10] = {0,0,0,0,0,0,0,0,0,0};方式2:int arr[] = {1,2,3,4,5,6,7,8,


9.汇编-JCC

之前可以修改EIP寄存器的指令JMP,CALL,RETN所有JCC指令的动作->根据标志寄存器修改EIP的值标志寄存器 EFLAGSCF(bit 0)[Carry flag] C位若算术产生的结果在最高有效位(most-significant bit)发生进位或者借位则将其置1 反之清零这个标


7.汇编-汇编中的函数

什么是函数函数就是一系列指令的几个,为了完成某个会重复使用的特定功能函数调用用JMP来执行函数用CALL来执行函数函数的参数和返回值通常情况下,会将函数的计算结果放到EAX寄存器中EAX 通常用来放返回值简单的加法函数ADD ECX,EDX //传参MOV EAX,ECX //传结果到EAX中RET


6.汇编-修改EIP的指令

EIP寄存器EIP寄存器表示CPU下次执行的位置JMP指令JMP指令相当于给EIP寄存器赋值JMP后面只能是32位的指令格式:MPV EIP,寄存器/立即数/内存简写:JMP 寄存器/立即数/内存JMP 0x00FF19 -> MOV EIP,0X00FF19JMP EAX


5.汇编-堆栈相关指令

什么是堆栈程序启动的时候操作系统会给每个程序一块虚拟的4G内存当程序需要使用的时候必须要和操作系统申请内存堆栈是程序的心脏,程序中需要用到的重要数据,都在堆栈中体现就是一块特殊的内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用和数据结构的堆栈无关查看堆栈正常内存使用从小地址往大地址使用,


4. 汇编-内存复制指令

标志寄存器 EFLEFL是32位寄存器其中的每一位,含义都是不同的0x00000246 16进制0000 0000 0000 0000 0000 0010 0100 0110 二进制第十位(从下标开始算 从右往左):DF位DF位为``的时候: MOVS 执行完毕之后 ESI和EDI的值会增加DF位位


1.汇编-寄存器

寄存器介绍寄存器是什么计算机在三个地方可以存数据cpu内存硬盘所谓寄存器,就是cpu中硬盘存储数据的地方寄存器的大小寄存器大小取决于cpu的位数比如32位 那么cpu所提供的容器有三种 8位 16位 32位如果64位 那么cpu所提供的容器有四种 8位 16位 32位 64位05年后的电脑cpu几乎