随笔分类 - 汇编语言
摘要:实现参考自 openjdk/hotspot/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp long cmpxchg(long exchange_value, volatile long* dest, long compare_value);
阅读全文
摘要:什么是虚表? 虚表全称为虚拟函数表 在C++语言中,每个有虚函数的类或者虚继承的子类,编译器都会为它生成一个虚表 虚表存储在哪里? 对象头8B(如果是32位操作系统是对象头4B,如果是64位操作系统是对象头8B) 什么是虚函数? 虚函数就是函数前面用virtual来修饰它,用法格式为: virtua
阅读全文
摘要:一、字节对齐规则 【规则一】数据成员对齐规则:变量只能从他的长度的整数倍地址开始存储 第一个数据成员放在 offset 为 0的地方,以后每个数据成员的对齐按照操作系统的基本字节单位(32位操作系统为4,64位操作系统为8)和这个数据成员自身长度中,比较小的那个进行。 即以后每个数据成员放在 off
阅读全文
摘要:一、字节对齐规则 【规则一】数据成员对齐规则:变量只能存储在他的长度的整数倍地址上 结构(struct)(或联合(union))的数据成员,第一个数据成员放在 offset 为0的地方,以后每个数据成员的对齐按照**#pragma pack**指定的数值和这个数据成员自身长度中,比较小的那个进行。
阅读全文
摘要:参考文档: 在函数的第一条汇编指令打断点 gdb调试--汇编指令处断点 g++编译main.cpp 在C++项目目录下打开命令行终端,执行编译命令: g++ -g -o main.o main.cpp 接着,继续执行命令: gdb main.o 打断 b *main (gdb) b *main Br
阅读全文
摘要:本文翻译自 Using Assembly Language in Linux 本文将描述 Linux 平台下的汇编语言编程。本文包含 Intel 和 AT&T 语法 asm 之间的比较、系统调用使用指南和 gcc 中内联 asm 使用入门指南。 Intel汇编语法和AT&T汇编语法的区别 Intel
阅读全文
摘要:section s1 offset dw str1,str2,num section s2 align=16 vstart=0x7c00 str1 db 'hello' str2 db 'world' section s3 align=16 num dw 0xbad 问题:在标号 offset 处定
阅读全文