
汇编记述三
关于栈空间大小 反汇编代码中的栈大小 栈帧的大小通常是由编译器在编译阶段计算出来的。 编译器在编译源代码时会分析函数的局部变量、函数参数、寄存器的使用情况等信息,然后根据这些信息计算出每个函数所需的栈帧大小。 自己写汇编 需要自己计算栈帧的大小,并为局部变量、参数、寄存器保存等分...
关于栈空间大小 反汇编代码中的栈大小 栈帧的大小通常是由编译器在编译阶段计算出来的。 编译器在编译源代码时会分析函数的局部变量、函数参数、寄存器的使用情况等信息,然后根据这些信息计算出每个函数所需的栈帧大小。 自己写汇编 需要自己计算栈帧的大小,并为局部变量、参数、寄存器保存等分...
关于比较与跳转 cmp eax,ebx会比较两个寄存器,然后根据两个比较结果来来设置处理器标志位(例如“大于”标志) 执行到jg .L2时,这条指令会检查处理器中“大于”的标志位 如果“大于”标志位被设置了,则跳转到标签.L2所在到位置继续执行后续指令 如果“大于”标志位没有被设...
数据部分 数据部分用于声明常量。 该数据在运行时不会改变。 代码部分 文本部分用于代码。 该部分必须以声明 global _start 开始,它告诉内核程序执行的开始位置。 注释 hello,world 前面两行定义了数据,并在其中放置了具有hello, world值的msg常量...
环境 当前linux环境是debian,安装软件如下: gcc make nasm IDE clion CLion插件 NASM Assembly Language 文件识别 语法高亮 Cpp文件 这个my_strlen是汇编文件里面定义的 extern "C"...
开发工具 CLion gcc g++ lua golang 开发辅助 git make 调试工具 gdb 调试 lldb 调试 汇编相关 nasm 终端相关 ohmyzsh Powerlevel10k主题 jonathan主题 vimplus 网络相关 net-tools 杀毒 ...
通用寄存器 RAX 是一个 64 位寄存器,可以存储 64 位的数据。 RAX 寄存器在 x86 架构中广泛用于存储操作数、函数返回值以及执行算术和逻辑操作。它是通用寄存器,可以用于多种目的。 调用约定: 在函数调用中,RAX 寄存器通常用于存储函数的返回值。 根据不同的调用约定...
scoped_refptr AdoptRef RefCounted及基类概要 通过衰减类型类比较是否是一样的类型 判断U是不是T的基类 scoped_refptr 判断类型U是否可转换为类型T 如果可以的话,std::is_convertible<U*, T*>::v...
概述 MVP模式(Model-View-Presenter)是一种用于构建用户界面的架构模式,它是MVC模式的一种变体。 MVP模式将应用程序划分为三个部分:Model(模型)、View(视图)和Presenter(表示器)。 Model(模型) 模型是应用程序的数据和业务逻辑的...
概述 委托模式(Delegate Pattern)是一种结构型设计模式,它允许一个对象(委托者)将某些特定的任务委托给其他对象(委托对象)来执行。 委托模式可以用于解耦合、分离关注点以及在运行时动态选择执行对象 委托模式的主要目的是将一组具体的任务从委托者对象中解耦出来,使得委托...
概述 MVVM 模式(Model-View-ViewModel)是一种软件架构模式,它是从 MVC(Model-View-Controller)模式演变而来的,旨在解决 MVC 模式中视图(View)和模型(Model)之间的紧密耦合问题。 MVVM 模式将应用程序分为三个主要组...