汇编语言
文章平均质量分 85
ComputerInBook
这个作者很懒,什么都没留下…
展开
-
AT&T 格式汇编语言语法
AT&T 格式汇编语言语法原创 2023-10-20 17:31:07 · 953 阅读 · 0 评论 -
GCC内联汇编及其在Linux内核中的使用
GCC内联汇编及其在Linux内核中的使用原创 2023-10-19 00:02:57 · 938 阅读 · 0 评论 -
IDA反汇编之栈帧例释
使用IDA进行反汇编分析原创 2022-09-13 19:58:37 · 2466 阅读 · 2 评论 -
MASM汇编器指令——.SETFRAME
MASM汇编器指令——.SETFRAME原创 2022-08-24 17:00:45 · 593 阅读 · 0 评论 -
计算机中整数的表示和整数运算
整数补码表示原创 2022-08-14 20:41:36 · 3169 阅读 · 1 评论 -
X64汇编语言指令编码
X64汇编语言指令编码原创 2022-08-06 22:03:40 · 5731 阅读 · 1 评论 -
X64指令前缀概览
X64指令前缀概览原创 2022-06-12 00:49:53 · 1238 阅读 · 0 评论 -
什么是SSE指令所说的打包(packed)数据?
SSE打包数据(packed data)原创 2022-06-07 16:51:28 · 838 阅读 · 0 评论 -
汇编语言——数据传输指令(Data Transfer)说明
汇编语言数据传输指令原创 2022-06-01 19:02:33 · 1684 阅读 · 0 评论 -
64位汇编语言中的符号位扩展说明
1. 同一个寄存器进行符号扩展(AL,AX,EAX,RAX)1.1 指令说明CBW(Convert Byte to Word):将AL寄存中的8位数值的符号位扩展到16位AX寄存中高8位的每一位。CWDE(Convert Word to Double word for Extension或Convert Word to Extened Double word):将AX寄存中的16位数值的符号位扩展到32位EAX寄存中高16位的每一位。CDQE(Convert Double word to Quad w原创 2022-05-31 17:49:41 · 1073 阅读 · 0 评论 -
Linux/Unix平台X64函数调用约定
X64调用约定利用寄存器来传递部分函数参数,不规范的函数调用规则逐渐减少。现主要有两种比较通用的函数调用规则。一种是Microsoft X64函数调用约定,参见以下链接:MSVC平台下X64处理器函数调用规则——底层机制_ComputerInBook的博客-CSDN博客目录1. 默认的调用规则2. 内存边界对齐问题3. 解开性(Unwindability)4. 参数传递5. 可变数量参数的传递6. 非原型函数7. 函数返回值8. 调用函数或被调函数存储寄存器9. 函数指针10. 对较旧代码的浮点支持11.原创 2022-05-27 18:07:46 · 1114 阅读 · 0 评论 -
为什么要学习汇编语言
目录1. 可以更好地理解计算机系统架构2. 可以更好地理解工具链(Tool Chain)3. 提高算法开发技能4. 增进对函数或过程的理解5. 获得对I/O缓冲区的理解6. 理解编译器的工作范围7. 理解多处理的概念8. 理解中断的概念汇编语言与具体机器类型有关,所以学习汇编语言可以理解计算机是如何工作的,其主要限制性在于用其编写项目缺泛移植性。但汇编语言可以直接控制系统资源。包括设置处理器寄存器、访问内存位置、以及与其它硬件部件交互。这就在很大程...原创 2022-05-12 18:16:39 · 3571 阅读 · 0 评论 -
C语言数组指针加1的问题
指向数组的指针存储的是连续的内存地址,而内存地址的最小编址单位是1字节,如果存储的数据本身移动几个字节,则内存地址也相应地移动几个字节。而数组指针的加1移动几个字节,取决于所指向的数组类型,这部分是由C/C++的编译器实现去处理的。下面具几个例子说明(下面的例子在MSVC的X64平台,指针本身占8个字节):1. 用C++语言测试(1) 指向1字节的数组指针:void TestPointerSize(){ char data[] = {1,2,3,4,5,6,7,8,9,10};...原创 2022-04-25 13:35:14 · 5502 阅读 · 0 评论 -
MSVC环境下X64 prolog和epilog
目录1. prolog的代码(在MASM中)2. epilog的代码(在MASM中)每一个函数需要分配栈空间、进一步调用其函数、保存非易失性寄存器、或者使用异常处理机制,都必须有一段序言代码(prolog),它的地址限制在解开数据(unwind)中描述,unwind数据与相应的函数地址条目相关。更多信息,参见X64异常处理文档。如有必要,prolog会将数据参数寄存器值保存在它的起始地址上(home address)(即,栈的最底下分出的一块地址,用于存放函数参数寄存器值和返回地址,称其为h翻译 2022-04-24 12:32:00 · 351 阅读 · 0 评论 -
MSVC平台下X64 ABI规则
本节描述X64架构(X86架构的64位扩展)的基本应用程序二进制接口(Application Binary Interface,简记为ABI)。这个主题的内容包括函数调用规则、类型分布、栈和寄存器用法、以及其它内容。1. X64调用规则概述 X64与X86之间重要的两个区别是64位的寻址能力和一套平坦的16个16位通用寄存器。给定扩展的寄存器集,X64使用 __fastcall调用规则和基于RISC(Reduced Instruction Set Computer)的异常处理模型。__fast...翻译 2022-04-23 18:09:37 · 861 阅读 · 0 评论 -
MSVC平台下X64处理器函数调用规则——底层机制
目录1. 默认的调用规则2. 内存边界对齐问题3. 解开性(Unwindability)4. 参数传递5. 可变数量参数的传递6. 非原型函数7. 函数返回值8. 调用函数或被调函数存储寄存器9. 函数指针10. 对较旧代码的浮点支持11. 浮点状态和控制寄存器(Float Point Status and Control Register,简记为FPSCR)12. 多媒体扩展控制和状态寄存器(Multimedia Extensions Control and翻译 2022-04-22 12:20:29 · 1130 阅读 · 0 评论 -
汇编语言逻辑“或”指令与应用示例:OR (Logical Inclusive OR)和 XOR (Logical Exclusive OR)
1. 定义:(1) OR是或运算,A OR B的结果:当A、B中只要有一个或者两个都为1时,结果为1,否则为0。 原则:两个输入有真则真。 汇编指令OR,称为逻辑包含“或”。(2) XOR是异或运算,A XOR B的结果:当A、B两个不同时结果为1,否则为0。 原则:两个输入相异则真。 汇编指令XOR,称为逻辑互斥“或”(注:使用的是exclusive的第二个字母缩写,因为e已被其它缩写占用)。2. OR 和 XOR的应用示例:执行这2条指令(还有逻辑AND指令也是一样...原创 2022-04-12 16:50:11 · 9218 阅读 · 0 评论 -
X64汇编语言寄存器结构及其与X86架构编程区别
目录1. 关于X64架构2. X64架构的寄存器结构2.1 通用目的寄存器2.2浮点数寄存器2.3指令指针寄存器2.4段寄存器2.5标识寄存器2.6控制寄存器2.6.1控制寄存器CR02.6.2控制寄存器CR22.6.3控制寄存器CR32.6.4控制寄存器CR42.6.5控制寄存器CR82.6.6控制寄存器CR1,CR5-7, CR9-152.7 模式指定寄存器(MSRs)(Model Specific Registers)2.7.1 IA32原创 2022-02-16 01:04:00 · 7787 阅读 · 1 评论 -
在Visual Studio C++ 项目中加入一个汇编语言源文件的方法
1.说明:Visual Studio工程系统通过使用MASM的方式支持在C++项目中使用汇编语言文件。MASM完全支持x64汇编语言源文件, 并自动将它们构建到目标文件中。然后,你可以将这些目标文件链入你为X64平台写的C++代码中。这是克服缺少x64内联汇编器的一种方法(意思就是说克服C++编译器不能直接编译.asm后缀的汇编语言源文件的方法,目前还没有内联支持直接编译汇编语言源文件)。2.具体步骤2.1 第一步:按Visual Studio向导建立C++工程,下面重点是第二步。2.2 第二步:.原创 2021-12-30 19:20:51 · 2796 阅读 · 0 评论 -
深入理解数据类型
1. 前言 有很多人会说,数据类型不是在高级语言编程中都会讲的吗,C,C++,C#,JAVA等都讲的很清楚,为什么还要提出来说呢?其实我想说,在几乎所有的高级语言编程书籍中,都将数据类型的讲解与底层割裂开来,对数据的大小端只字不提(C++之父写的书讲到了大小端),对浮点数的编码也没有讲清楚,什么是网络字节序和字节对齐更没有讲解,那些数据类型需要考虑网络字节序,那些不需要,有符号数和无符号数到底有什么区别?其实,所有定义的数据类型,都是基于底层而来,所以有必要从底层来分析理解数据类型,以下结合....原创 2020-10-07 18:47:34 · 1452 阅读 · 0 评论 -
汇编语言符号扩展指令及应用示例
汇编语言符号扩展指令及应用示例原创 2019-05-13 00:28:36 · 12960 阅读 · 1 评论 -
汇编语言列表文件说明(MASM宏汇编器)
1. 编译时产生汇编译列表文件在VS2017中,编译时生成汇编列表文件的步骤如下:1.1 项目右键->属性->Microsoft Macro Assembler->Enable Assembly Generated Code Listing 选是(/Sg)1.2 Assembled Code Listing File写入生成文件名称,比如$(Project...原创 2019-05-04 17:05:08 · 4094 阅读 · 0 评论 -
汇编语言标志寄存器
在VC++中调试汇编代码,常见的标志寄存器简写老是搞不清楚,现在彻底搞个明白,如下所示:OV = 0 UP = 0 EI = 1 PL = 0 ZR = 1 AC = 0 PE = 1 CY = 0分别是什么意思,一定要搞清楚,特别是后面这成对的16项,下面这张图讲的很明白OV(Overflow) NV(Not Overflow)UP(Up) DN(D...原创 2019-04-18 23:51:08 · 1024 阅读 · 0 评论 -
汇编语言的寻址模式及示例
1. 什么是汇编语言的寻址模式(或者编址模式) 机器指令是计算机CPU可执行的指令,一条指令要包含操作符和操作的对象—操作数。对于Intel Processors指令集而言,有的指令没有操作数,有的有多个操作数(大于1个)。所谓寻址模式,就是我们写的代码要指明操作数在那里,这样CPU才能正确的找到操作数,执行这条指令。一条指令的操作数,可以直接包含在指令中,不需要去别的地方寻找;...原创 2019-04-14 16:41:54 · 4854 阅读 · 0 评论 -
学习汇编踩过的坑及优秀汇编教材推荐
1. 引言在学校时没有好好的学好汇编这门重要的基础课程,总是听很多老师说这门课程工作后很少用到,有众多C,C++,JAVA等等高级语言。于是乎,这门课程草草结束,也没有几个学懂,即使有几个同学有心学习,也是苦于晦涩难懂的教材,无从下手。于是与之相关的计算机系统结构,编译原理,操作系统等等一众计算机核心基础课,甚至连C语言,C++语言也没法深入理解,没法从根本上理解,导致了后续一连串的计算机课程...原创 2019-04-21 23:41:46 · 8848 阅读 · 7 评论 -
汇编语言学习及实验环境的建立
学习汇编语言的好处不言而喻,特别是对于做底层开发,c和c++开发开发人员来说,可以深入底层加深理解,直正懂得什么是计算机语言,写出真正高效的程序,可以深入调试,快速定位bug。尤其对逆向分析人员来说,不懂汇编那几乎是不可能的事情。还有很多好处就不一一述说了。 汇编语言难学很大程度也在于没有一本好的教材,特别是没有一本好的实践的教材和集成的实战环境,让很多人想学又无从下手...原创 2019-03-10 22:10:28 · 494 阅读 · 0 评论