自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 高级语言调用汇编语言的接口规范

从高级语言中调用汇编过程时,需要解决一些常见的问题。首先,一种语言使用的命名规范(naming convention)是指与变量和过程命名相关的规则和特性。比如,一个需要回答的重要问题是:汇编器或编译器会修改目标文件中的标识符名称吗?如果是,如何修改?其次,段名称必须与高级语言使用的名称兼容。第三,程序使用的内存模式(微模式、小描述、紧凑模式、中模式、大模式、巨模式,或平坦模式)决定了段大小(16 或 32 位),以及调用或引用是近(同一段内)还是远(不同段之间)。调用规范调用规范(calling

2020-11-03 01:30:53 263 1

原创 汇编语言堆栈帧

子程序如何用堆栈接收参数?在 32 位模式下,堆栈参数总是由 Windows API 函数使用。然而在 64 位模式下,Windows 函数可以同时接收寄存器参数和堆栈参数。堆栈帧 (stack frame)( 或活动记录 (activation Tecord)) 是一块堆栈保留区域,用于存放被传递的实际参数、子程序的返回值、局部变量以及被保存的寄存器。堆栈帧的创建步骤如下所示:(1) 被传递的实际参数。如果有,则压入堆栈。(2) 当子程序被调用时,使该子程序的返回值压入堆栈。(3) 子程序开始

2020-10-31 18:42:57 282

原创 C/C++的交互(从C/C++代码调用汇编代码中的函数与变量)

详细参考《TMS320C28x Assembly Language Tools User’s Guide》在C/C++与汇编语言混合编程的情况下,一般我们都会选择C/C++来实现所期待的大部分功能,对于少数和硬件关联度高(例如操作某些CPU寄存器)以及对运算的实时性要求高(例如高速、多点的FFT)的功能才使用汇编来实现,这就使得大多数情况下,C/C++与汇编的交互都是从C/C++代码调用汇编代码中的函数与变量,所以在此我们就来看一下这种调用的规则。1.从C/C++中调用汇编代码中的函数如果一个在汇编代

2020-10-07 13:10:02 657

原创 对ANSI、ASCII、UNICODE的解释

ANSI通常使用 0x80~0xFFFF 范围的 2 个字节来表示 1 个字符。不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 S...

2020-03-14 12:08:46 398

原创 在c++中使用new分配内存的注意事项

内存被耗尽计算机可能会由于没有足够的内存而无法满足new的请求。在这种情况下,new将返回0。在C++中,值为0的指针被称为空值指针( null pointer)。C++确保空值指针不会指向有效的数据,因此它常被用来表示操作符或函数失效,如果成功,它们将返回一个有用的指针。学习if语句后,读者便可以检查new是否返回的是空值指针,从而防止程序超界。如果无法分配内存,new除返回空值指针外,还可能...

2020-03-14 12:00:29 259

原创 在C++中,为什么main()函数不能使用其他名称?

通常C++程序中必须包含一个名为main()函数(大小写和拼写都要正确)如:MAIN()Main()Mina()都是不正确的,在运行C++程序时,通常从main()函数开始执行,如果没有main()函数则程序不完整,编译器将指出未定义main()函数。不过,也存在一些特殊情况,例如,在Windows编程中,可以编写一个动态链接库(DLL)模块,这是其他Windows程序可以使用的代码。由于DLL...

2020-02-20 14:31:30 473

原创 汇编语言条件跳转指令汇总

x86 指令集包含大量的条件跳转指令。它们能比较有符号和无符号整数,并根据单个 CPU 标志位的值来执行操作。条件跳转指令可以分为四个类型:基于特定标志位的值跳转基于两数是否相等,或是否等于(E)CX 的值跳转基于无符号操作数的比较跳转基于有符号操作数的比较跳转下表展示了基于零标志位、进位标志位、溢出标志位、奇偶标志位和符号标志位的跳转。助记符 说明 标志位/寄存器 助记符 说明 标志...

2020-02-20 13:43:42 1265

原创 编程术语表

解决问题(problem-solving):提取问题、寻找方案、表达方案的过程。高级语言(high-level language):为了人们能够方便地读写而设计的编程语言,如C++。低级语言(low-level language):为了便于计算机执行而设计的编程语言。也称作“机器语言”或“汇编语言”。可移植性(portability):程序可以在多种平台上执行的属性。形式语言(forma...

2020-02-12 11:26:02 994

原创 Refactoring

What is refactoring?Refactoring is a process :Without changing the external behavior of the code, Modify the code to improve the internal structure of the program ,Refactoring is a method of programm...

2020-02-11 13:10:22 203

原创 《C++ Primer Plus第五版》中文版

C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。作者简介Stephen Prata在加州肯特菲尔得的马林学院教授天文、物理和计算机科学。他毕业于加州理工学院,在加州大学伯克利分校获得博士学位。Stephen本人或他...

2020-02-07 09:56:09 704

原创 《The C++ IO Streams and Locales》英文版

List itemDirectory: Visual C++ BooksPlat: Visual C++Size: 468KBDownloads: 0Upload time: 2019-01-28 17:09:50Uploader: Lukas1886Description: 0.3 The C++ IO Streams and Locales

2020-02-06 18:52:10 517

原创 unsupported编码值

unsupported类型有3类,它们的J-bit(integer)为0。只有double extended-precision floating point(拓展双精度浮点数)会出现unsupported编码;原因:single-precision floating point(单精度浮点数)、double-precision floating point(双精度浮点数)的integer是隐...

2020-02-05 21:38:24 408 1

原创 Operating Systems 书名(中文):操作系统: 设计及实现(第二版)

Operating SystemsOperating Systems Design and Implementation, Third EditionBy Andrew S. Tanenbaum - Vrije Universiteit Amsterdam, The Netherlands, Albert S. Woodhull - Amherst, MassachusettsPublish...

2020-02-05 13:23:23 2054

原创 real number(实数)和NaN(Not a number)

IEEE754标准定义了多种实数的编码方式:(1)zero,包括 0.0和-0.0编码(2)denormal数字,不合规的数,又称tiny(极小数)(3)normal数,合规的普通浮点数,这是一个finite(有限的)取值范围。(4)infinite(无限)数字,包括正无穷和负无穷。(5)NaN(not a number),包括SNaN、QNaN。13、denormal(不合规)数...

2020-02-04 21:36:34 1685 1

原创 汇编OFFSET:返回数据标号和偏移量

OFFSET 运算符返回数据标号的偏移量。这个偏移量按字节计算,表示的是该数据标号距离数据段起始地址的距离。如下图所示为数据段内名为 myByte 的变量。OFFSET 示例在下面的例子中,将用到如下三种类型的变量:.databVal BYTE ?wVal WORD ?dVal DWORD ?dVal2 DWORD ?假设 bVal 在偏移量为 0040 4000(十六进制)的位...

2020-02-04 17:26:52 1081 1

原创 对称加密、单向加密和公钥加密的概念和联系

下文主要从加密算法的特征、常用加密算法和加密工具等方面,梳理和比较对称加密、单向加密和公钥加密的概念及其之间的联系。对称加密采用单钥密码的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。常用的单向加密算法:DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;3DES(Triple DES...

2020-02-04 16:45:27 1250 2

原创 nasm帮助

3.1 NASM源程序行的组成。就像很多其他的汇编器,每一行NASM源代码包含(除非它是一个宏,一个预处理操作符,或一个汇编器操作符,参况第4,5章)下面四个部分的全部或某几个部分:label: instruction operands ; comment通常,这些域的大部分是可选的;label,instruction,comment存在或不存在都是允许的。当然,operands域会因为...

2020-02-04 16:12:59 253

原创 关于解决浮点数使用integer方法进行比较出现的问题解决

关于解决浮点数使用integer方法进行比较时出现的问题引入biased notation(校正值)解决此问题。例子:1.002-1和1.00*21的大小比较。1.002-1的指数为-1,而1.00*21的指数为1,显然指数大的必定会大,但如果指数是负数呢?按照这样的方式,会得出指数比正数还要大的结论,这是错误的。于是biased notation配上用场了,单精度的biased为127...

2020-02-03 23:56:42 495

原创 X86/X64体系数据类型

指令处理的数据分为两大类:fundamental(基础)和numeric(数值)fundamental基础包括:byte(8位)、word(16位)、doubleword(32位)、quadword(64位)numeric(数值)包括:(1)integer(整形数)包括:unsinged类型、singed类型(2)floating-point(浮点数)包括:single-precisio...

2020-02-03 13:03:58 333

原创 大端序和小端序详解

要了解大端序和小端序,我们首先需要了解什么是MSB、LSB。MSB:(Most Significant Bit)最高有效位LSB:(Least Significant Bit)最低有效位举个例子:以一个自然的二进制表达序列上32位的二进制数为例,最右端为bit0,最左端为bit31,那么bit0为LSB,bit31为MSB知道这个概念,我们就可以了解什么是大端序,什么是小端序了;大端序...

2020-02-02 23:41:20 1088

原创 汇编分类指令集

1、数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格...

2020-02-02 20:42:03 577

原创 GIL是什么?

GIL是什么首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同样一段代码可以通过CPython,PyPy,Psyco等不同的Python执行环境来执行。像其中的J...

2020-02-02 20:37:24 701

原创 循环程序设计

在实际问题的处理程序中、常常需要按照一定规律,多次重复执行一串语句,这类程序叫循环程序。循环程序一般由4部分组成:(1)置循环初值部分:这部分是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类,一类是循环工作部分的初值,另一类是控制循环结束条件的初值。(2)工作部分:即需要重复执行的程序段。这是循环程序的核心,称之为循环体。(3)修改部分:按一定规律修改操作数地址及控制...

2020-02-02 16:10:28 534

原创 分支程序设计

1、条件标志位的设置规则8088内部结构说明,条件标志位共有6个,分别是 CF、ZF、SF、OF、AF和PF.前4个的使用颖率非常高,需要重点掌握。(1)CF(进位和借位标志)CF主要用于记载两个数据相加或相减时,最高位向外的进位或借位情况。如果有进位或借位,则CF被置1,否则清0。参与运算的数据可以是16位的、也可以是8位的。CPU在加减运算设置CF时都是当作8个或16个二进制位处理的。...

2020-02-02 01:01:12 701

原创 关于汇编语言操作数、操作符、操作码例子和定义详解

操作数定义:操作数是运算符作用于的实体,是表达式中的一个组成部分,它规定了指令中进行数字运算的量 。表达式是操作数与操作符的组合。操作数指出指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。例如:Mov AX 5678H 指令Mov为操作符,而它后面的(AX 5678H)为操作数一条指令均包含操作符和操作数。例如:在比较指令中操作符指定计算机做比较操作,操作数则指定进行比较的...

2020-02-01 18:32:37 11030 2

原创 互联网三大网络协议

传输层中有两个重要的协议,UDP和TCP,这也是在开发中经常用到的协议,同样也是面试的重点。本篇将分为三节进行介绍:• UDP协议• TCP协议• 套接字Socket一、UDP协议很多人都会被问到 TCP和UDP的区别,那么大部分人都会回答,TCP面向连接,UDP面向无连接;建立连接:是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的...

2020-02-01 17:43:36 1691

原创 汇编语言复习

通用数据传送指令MOV——传送指令指令格式:MOV DST,SRC ;(DST)←(SRC)。DST表示目的操作数, SRC表示源操作数说 明:①.DST为除CS外的各寄存器寻址方式或任意存储器寻址方式。SRC为任意数据寻址方式。②.DST、SRC不能同时为存储器寻址方式,也不能同时为段寄存器寻址方式,而且在DST为段寄存器时,SRC不能为立即数。③.MOV指令...

2020-02-01 15:34:14 574

原创 相关区块链的术语

Terminology for related blockchain parts3.1.1 数据 data3.1.2 电子数据 digital data3.1.3 结构化数据 Structured data。 3.1.4 半结构化数据 Semi structured data3.1.5 非结构化数据 Unstructured data。3.1.6 组织...

2020-02-01 13:01:00 199

原创 椭圆曲线算法

椭圆曲线算法椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密。  椭圆曲线在密码学中的使用,是1985年由Neal Ko...

2020-02-01 12:58:14 1965

原创 汇编语言六大基础伪指令详解

六大伪指令(基础)1、OFFSET变量是数据的存放地,对变量最常见的操作是从变量中取出数据和把数据放人变量中。实现这些操作有直接法和间接法两种方法。以该寄存器加方括号的形式指明是用寄存器中的内容作为偏移地址,操作数在相应的内存把保留字OFFSET加在变量名字的前面,表示取该变量的偏移地址。汇编程序把"OFFSET变量名"作为一个常量处理,而常量本身是没有类型的。不论变量在定义时是什么类...

2020-01-27 15:57:36 1018 2

原创 汇编语言变量三属性详解

汇编语言变量三属性1、段属性变量的段属性也就是变量所在段的段地址。变量定义必须写在一个段的起止标志之间。在程序被调入内存时,每个段被操作系统安排一个确定的段地址,在编写程序时可以用段的名字指出某处要使用段地址,面这个段中的所有变量都统一地以这个段地址作为逻辑地址中的段地址部分。如果在编写程序时需要使用某个变量的段地址,一种方法是用该变量所在段的段名。取段地址的另一种方法是在变量名的前面加上...

2020-01-27 15:48:00 2838

原创 操作系统-进程管理

进程管理要点:基础:进程描述及控制策略:进程调度实现:互斥与同步避免:死锁与饥饿解决:几个经典问题进程的引入程序的顺序执行源代码程序,目标程序和可执行程序程序执行:编辑,编译,链接,执行程序的结构:顺序,分支,循环结构程序执行的特征:顺序性,封闭性,可再现性程序并发执行多道程序设计技术:多个程序并发执行程序并发执行时的特征:间断性,非封闭性,不可...

2020-01-27 15:44:02 211

原创 计算机系统概述(详解)

(一)组成部分1.计算机硬件:CPU + MM + I/O(1)中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。1.cpu体系结构详解1.1. 处理器简要结构我们都知道CPU的根本任务就是运行指令,对计算机来说终于都是一串由“0”和“1”组成的序列。CPU从逻辑上能...

2020-01-26 20:17:01 815

原创 汇编语言指令

指令助记符如MOV, SUB这些词分别表示传送, 减法. 汇编源程序时, 系统使用内部对照表将每条指令的助记符翻译成对应的机器码目的操作数目的操作数一共有两个作用参与指令操作暂时储存操作结果源操作数源操作数主要提供原始数据或操作对象, 面向所有寻址方式. 例如, 在指令SUB AX, BX 中 的值作为减数提供给指令SUB操作符...

2020-01-26 20:13:59 388

原创 ASCII码规则

常见ASCII码的大小规则:09<AZ<a~z。(1)数字比字母要小。如 “7”<“F”;(2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;(3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;(4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。几个常见字母的ASCII码大小: “A”为65;“a”为97;“0...

2020-01-26 13:48:04 3255

原创 使用进程池规避python的GIL限制

使用进程池规避python的GIL限制问题描述Python的GIL会对CPU密集型的程序产生影响,如果完全使用Python来编程,怎么避开GIL的限制呢?解决方案在多线程中使用进程池来规避GIL的限制。具体如下:1、使用multiprocessing模块来创建进程池;2、将计算任务分配给不同的线程;3、在任务线程中把任务提交给之前创建的进程池; 每当有线程要执行c...

2020-01-25 10:44:41 226

原创 ASCII码表(标准表)

ASCII码表(标准表)== 二进制 (B)==八进制 (O)十进制 (D)十六进制(H)B O D H 缩写/字符 解释00000000 00 0 0x00 NUL(null) 空字符0000 0001 01 1 0x01 SOH(start of headline) 标题开始0000 ...

2020-01-24 21:31:12 1156

原创 汇编语言指令详解

包括22中指令,分别是:MOV ADD ADC INC SUB SBB DEC NEG MUL IMUL DIV IDIV CBW CWD XCHG XLAT AND OR NOT XOR TEST ASSUME希望总结下的对大家有帮助,如果不够完善,谢谢帮忙指正1. MOV(双操作数指令)格式:MOV 目的操作数,源操作数其中:MOV为操作码:目的...

2020-01-24 21:14:36 2100

原创 操作系统经典书籍推荐

经典书籍推荐推荐原则:宁缺勿滥,决不混进糟粕 (好书不一定对所有人都合适,但对于它的目标读者群来说,一定是好书)。选书原则:有国外的,不看国产的有原版的,不看翻译的看大师的作品计算机的书最好看国外的教材,因为比较经典的教材都是国外的,而且尽量看英文原版的,如果一个人永远不接触英文原版,那么他的信息接受必定比别人慢,无形中落后很多。我建议如果你有一定外语基础其实就是学过英语,一定要坚持...

2020-01-23 23:21:10 368

原创 MOV指令详细介绍

MOV(双操作数指令)格式:MOV 目的操作数,源操作数其中:MOV为操作码:目的操作数,可以是寄存器、存储器、累加器:源操作数,可|以是寄存器、存储器、累加器和立即数。功能:将一个源操作数(字或字节)送到目的操作数中。说明:本指令不影响状态标志位。其中:(1)目的操作数是数据送往的地点,不允许为立即寻址方式。(2)如果目的操作数使用通用寄存器的寄存器寻址方式,则源操作数可以是立即数...

2020-01-23 22:26:22 22318 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除