- 博客(22)
- 资源 (12)
- 收藏
- 关注
原创 老码识途之构造函数和析构函数
对象初始化过程就是先父类构造函数,再子类构造函数。,那么我们从汇编角度去探索这个过程是怎么样的class P{public: int a ; P(){ a = 1; } ~P(){ a = 4; }};class C:public P{public: int b; C(){ b = 2; } ~C(){ b = 3; }};int func...
2019-10-29 16:06:05 119
原创 老码识途之对象函数调用
上一期,我们讨论了普通函数的调用过程,如果没弄明白,看这里今天所要讲的将是对象调用函数。 class C{ public: int a; int b; int c; void f(int t){ a = t; } };int _tmain(int argc, _TCHAR* argv[]){ C c; c.f(1); c.b = 2; retu...
2019-10-28 20:08:27 380
原创 老码识途1之函数调用和局部变量
无论在编程中,还是在面试中,都会遇见调用函数这个东东,但是,要是让你说函数是怎么调用的,你能回答上来吗,接下来就让我们一起探索函数如何在汇编层次上实现调用的在接下来,我们将有几个问题要去解决函数调用如何传递参数的函数调用如何查找调用函数的地址的函数内部调用过程是怎么样的函数调用如何返回结果如果返回值是结构体又如何返回函数调用结束后,如何返回调用之前的状态#include "st...
2019-10-27 15:55:00 230
原创 老码识途1之理解指针和指针强制转换
我们都知道指针用来存储内存的地址,而内存地址一般32位机器上是32位bit,64位机器上64位bit,但是当我们在运行下面的代码时,编译时为什么会报错,,大家可能想到的就是类型不对,那么,现在又有一个问题来了,编译器怎么知道类型不对,明明指针内存大小空间要么是32位,要么是64位,现在怎么就出现这种报错 int a =12; short *p = &a;下图是我运行的截图,实实在...
2019-10-26 17:11:17 214
原创 汇编语言之数据处理
机器指令数据处理的位置汇编代码指令前数据的位置mov bx,[0]内存单元 ds:0mov bx,axcpu内部,ax寄存器mov bx,1cpu内部,指令缓冲器先来介绍下等下需要用到的名词SA 表示段地址EA表示偏移量[bx]mov ax,[bx]bx中存放的数据作为一个偏移地址EA,他的默认SA为ds 上面则为 (ax) = ((ds)...
2019-10-26 11:29:50 551 1
原创 汇编语言之寄存器
cpu中,用16位寄存器来存储一个字,高8位存放再高位字节,低8位存放再低字节,在内存中存储时,由于内存单元是连续的,则一个字要用两个地址连续的内存单元存放DS和[address]...
2019-10-26 10:53:17 124
原创 汇编语言之物理地址
16位结构的cpu的特点运算器一次最多可以处理16位数据寄存器的最大宽度是16寄存器和运算器之间的通路是16位8086cpu给出物理地址的方法8086cpu有20位地址总线,可以传送20位地址,也就是1M寻址能力,而8086又是16位结构,在内部一次性处理、传输、暂时存储的地址为16位,则寻址能力只有64KB8086cpu采用一种内部用两个16位地址合成的方法形成20位的物理地址...
2019-10-26 10:25:36 1589
原创 汇编语言之外中断
CPU可以直接读写以下3个地方的数据cpu内部寄存器内存单元端口有种中断信息来自cpu外部,当cpu外部有需要处理的时候,比如说,外设的输入到达,相关芯片将向cpu发出的相应的中断信息。cpu在执行完当前指令后,可以检测到发送过来的中断信息,引发中断过程,处理外设的输入1)可屏蔽中断可屏蔽中断是cpu可以不响应外中断,cpu是否相应可屏蔽中断,要看标志寄存器IF的设置,当cpu检测...
2019-10-25 15:49:44 265
原创 汇编语言之内中断
中断的作用就是暂停当前程序的执行,并转去执行另外一个程序。内中断是cpu执行的指令产生的系统内置的内中断除法错误,比如执行div指令产生的除法溢出 0单步执行 1执行into指令 4执行int指令 N...
2019-10-25 11:02:20 543 1
原创 汇编语言之标志寄存器
ZF标志ZF标志是零标志位(zero flag);她记录相关指令执行后,其结果是否为0,如果为0,则ZF = 1,如果不为0 ,则 ZF = 0例如mov ax,1sub ax,1上面指令执行后,ZF= 1PF标志PF标志是奇偶标志位(parity flag),他记录相关指令执行后,其结果所有的bit位中1的个数是否为偶数,如果为偶数,则PF= 1,否则为0mov al,1ad...
2019-10-24 17:01:45 1002
原创 汇编语言之call和ret指令
ret指令用栈中的数据,修改ip的内容,从而实现近转移retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移cpu在执行ret指令时,进行下面两步操作(ip) = ((ss)*16 +(sp)(sp) = (sp)+2使用汇编语言表示就是pop ipassume cs:codestack segment db 16 dup(0)stack endsco...
2019-10-24 16:05:56 297
原创 汇编语言之转移指令
在8086CPU中,转移指令分为以下几类 无条件转移指令(jmp) 条件转移指令 循环指令 过程 中断操作符offset操作符offset在汇编与语言中由编译器处理的符号,他的功能是取得标号的偏移地址assume cs:codecode:segment start:mov ax,offset start //(ax) = 0 s:mov ax,offset s //(...
2019-10-24 09:54:52 413
原创 汇编语言之dup
dup是一个操作符,在汇编语言中同db,dw,dd等一样,也是汇编器处理的符号,他是同db、dw,dd等数据定义的伪指令配合使用,用来进行数据的重复db 重复的次数 dup (重复的字节性数据)dw 重复的次数 dup (重复的字型数据)dd 重复的次数 dup (重复的双字性数据)...
2019-10-23 10:20:57 12668
原创 6、gdb学习之core文件
看到上面的结果是不是有种老相识的感觉哈,接下来就尝试使用core解决上面问题core文件有问题的程序运行后,产生“Segmentation fault”时生成的具有堆栈信息和调试信息的文件。编译时需要加 -g 选项使程序生成调试信息: gcc -g core_test.c -o core_test配置生成 core 文件使用 ulimit -c 查看core开关,如果为0表示关闭,不会...
2019-10-20 17:07:07 202
原创 5、gdb学习之多线程调试
首先贴上本节的代码//thread.c#include <stdio.h>#include <stdlib.h>#include <pthread.h>#define MAX_N 1000000#define MAX_THREADS 100int nthreads, n, prime[MAX_N+1], nextbase;int w...
2019-10-20 16:26:48 108
原创 4、gdb学习之主要变量操作
在gdb中,查看变量的值主要使用print整个命令,print格式是print xxxp xxx下面使用的code//test.cpp#include <iostream>using namespace std;int* t;int main(){ int i = 1; int b[] = {1,2,3,4,5}; t = new int(10); fo...
2019-10-20 11:01:42 343
原创 3、gdb学习之主要断点操作
断点用来让程序暂停执行的位置,gdb有三种方式让程序暂停执行,断点 通知gdb在程序中特定位置暂停执行监视点 通知gdb内存特定位置的值发生变化时暂停执行捕获点 通知gdb当特定事件发生时暂停执行设置断点gdb设置断点方法有很多,主要使用以下三种方法break functionbreak line_numberbreak filename:line_numberbreak...
2019-10-19 20:44:38 283
原创 汇编语言之div命令
上一节,我们学习了gdb的环境的安装和如何带gdb参数进行编译程序,这节,我们将学习gdb的一些基本操作,后面将对这些操作进行详细讲解。单步调试代码1)断点断点用来指定程序暂停执行,gdb中使用break命令设置断点,也可以使用b这个简写,说明,以后遇见了简写的命令,我将使用命令(简写命令),2)单步调试单步调试就是执行命令的下一条,在gdb中,单步调试的命令是next(n)和’step...
2019-10-19 14:12:43 9547 1
原创 1、gdb学习之初涉调试
前期准备我本次学习使用的系统是centos,首先需要安装vim编辑器和gdb调试器,可以使用命令yum install vim gdb -y,如果是使用ubuntu的需要使用apt-get进行安装。code下面是我本单元使用的code,//gdb_1.cpp#include <iostream>using namespace std;int add(int a,int...
2019-10-19 10:47:13 77
转载 原码、反码、补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助!一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是...
2019-10-13 10:59:18 71
spring-5.2.6.RELEASE-dist.7z
2021-07-18
mysql57-community-release-el7-9.noarch.rpm
2020-10-25
LSM-tree.7z
2020-07-06
NetAssist.zip
2020-05-21
MySQL15_47360.zip
2020-04-22
DOSBox0.74-win32-installer.zip
2019-10-24
DOSbox使用的masm.zip
2019-10-24
copy fofboiv sfbo .zip
2019-06-27
《机器学习与应用》_雷明 百度网盘
2019-04-07
Pig编程指南.pdf
2017-02-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人