自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WarEric的博客

编程菜鸟,主要用来整理记录一些学习笔记

  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

原创 函数栈结构与内存对齐

函数栈下图是x86-64的函数栈的结构, 函数P调用函数Q的过程,Q正在执行。 这里仅对两个地方解释,其他的很容易理解,就不细说了其中返回地址用来实现函数的返回。当Q要返回到P时,就要调用此地址获取返回位置。参数构造区是对调用函数P传递的参数的拷贝,因为当P传递参数过多时,无法通过寄存器传递,只好在P的栈帧中保存;调用Q时,将其拷贝到参数构造区x86-64过程只分配自己所需...

2018-04-23 11:03:21 1543 1

原创 控制指令

条件码CPU维护一组单个位的条件码寄存器 - CF:进位标志。最近的操作使最高位产生了进位。可用来检查无符号操作的溢出。 - ZF:零标志。最近的操作得出得结果为0。 - SF:符号标志。最仅的操作得到的结果为负数。 - OF:溢出标志。最近的操作导致一补码溢出——正溢出或负溢出。leaq指令是用来进行地址计算的,不改变任何条件码。 指令 基于 描述 ...

2018-04-22 11:01:22 4285

原创 算数和逻辑操作

这些指令类有各种不同大小操作数的变种,(只有leaq没有)例如ADD由四条加法指令组成:addb, addw, addl, addq。 指令 效果 描述 leaq S,D D<—&S 加载有效地址 INC D D<—D+1 加1 DEC D D<—D-1 减1 NEG D...

2018-04-20 23:11:37 593

原创 数据传送指令与栈操作

数据传送指令 指令 效果 描述 MOV S,D D<—S 传送 movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq I,R R<—I 传送绝对的四字简单的数据传送指令,注意两个操作数不能都是内存 指...

2018-04-20 23:10:19 1590

原创 浮点数寄存器与指令

寄存器AVX浮点体系结构允许数据存储在16个YMM寄存器中 255 127 0 %ymm0 %xmm0 1st FP arg.返回值 %ymm1 %xmm1 2nd FP参数 %ymm2 %xmm2 3rd FP参数 %ymm3 %xmm3 4th FP参数 %ymm4 %xmm4 5th F...

2018-04-16 17:49:05 9894

原创 寄存器名称与数据类型

寄存器x86-64结构的CPU包含一组16个存储64位值的通用目的寄存器;历史上最开始的寄存器只有8个8位的寄存器,后来经历了16位, 32位直至现在的64位,寄存器也由8个扩展到16个。程序可以依据每个寄存器的名称使用其中的8位,或16位,或32位,或64位;使用每个寄存器有约定的使用目的。下面以表格的形式给出寄存器的名称与用法 63 31 15 7 0...

2018-04-15 22:06:22 7653

原创 GDB命令(待续)

GDB命令 命令 效果 开始和停止 quit 退出GDB run 运行程序(在此给出命令行参数) kill 停止程序 断点 break multstore 在函数multstore入口处设置断点 break * 0x400540 在地址0x400540处设置断点 delete 1 ...

2018-04-14 22:36:51 383

原创 从原理上理解C++中引用和指针的区别

C++中引入了引用这种数据类型,可以对引用所指向的数据直接进行修改,和对原始数据操作一样,类似一种别名;而指针操作却需要考虑引用与解引用,那么这两种有什么区别呢?仅从语法上死记硬背总是忘记,用起来也不得心应手,从原理上理解才是最好的选择,接下来我试图从我个人理解的角度进行分析(可能是错的),最后再做语法上的对比。引用只是别名,并不占有内存设计引用目的只是为了将程序员从指针操作中解放出来,例...

2018-04-14 18:18:04 320

原创 if分支语句通过控制传送和条件传送实现的区别

(注:以下内容和原理均来自《深入理解计算机系统第3版》) 当我们实现一个带有判断功能的代码时要使用到if判断语句,if语句在汇编中是如何实现的呢?我们先来看这样一个代码absdiff.clong absdiff(long x, long y){ long result; if(x < y) result = y-x;

2018-04-11 16:17:18 1226 1

疯狂java讲义

这个书相比较作为一本入门教材来说,似乎更适合作为一本手册,放在初学者手边用以查阅。从这个层面来看,这本书还是很有价值的。

2018-01-07

空空如也

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

TA关注的人

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