logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++开发者如何学好汇编(中)

指令的作用是将 AX 寄存器的值当作源操作数,存储到 DI 寄存器中,当与 REP 组合使用时,可以使用 CX 寄存器作为循环计数器,进行多次循环,将 AX 寄存器的值不断拷贝到 DI 寄存器所指向的内存地址中,DI 寄存器则会每次循环以后自动调整,相当于下面这个过程。SP 寄存器(Stack Pointer)用于指向当前的栈顶位置,在 x86 架构中,栈是向下增长的(向更低的地址增长),执行 p

#c++
C++开发者如何学好汇编(上)

SP 寄存器(Stack Pointer)用于指向当前的栈顶位置,在 x86 架构中,栈是向下增长的(向更低的地址增长),执行 push 和 pop 指令会自动修改 SP,当往栈压入数据时,SP 会减小,当从栈上弹出数据时,ESP 会增加。为了让你更直观地理解 this 指针的作用,我写了两个函数,一个是 Foo 类的成员函数 bar,一个是普通的函数 xyz,可以看到这两个函数的汇编代码一模一样

#c++#开发语言
快速入门gdb

GDB 是类 Unix 操作系统下的一款 C/C++ 代码调试器,由大名鼎鼎的 Richard Stallman 开发,这人就是 GNU 项目的发起人,成立了自由软件基金会,贡献了 GCC、GDB、GNU Emacs 等基础软件。

#linux#网络
qemu + GDB 如何单步调试内核

在阅读 linux 内核源码的过程中,我们经常希望能单步运行调试内核函数的运行,通过 systemtap 或者 bpf 等技术可以窥探到一些细节但还是不如单步来得直接,这篇文章我们来看看 qemu + GDB 如何单步调试内核,当我们对进程管理、内存管理、文件系统的实现有什么困惑就可以动手 debug 一下,实际出真知。QEMU (Quick Emulator) 是大神 Fabrice Bella

#算法#运维
第01课:调试信息与调试原理

Linux 下 C++ 程序开发,即使使用 makefile、cmake 等编译工具,其最终都是调用 gcc 这一编译的。这里说的,是因为编译 C 程序和 C++ 程序使用的编译工具还是有一点差别的,一般编译 C 程序使用,编译 C++ 程序使用。(下面为了叙述方便,除非特别说明,否则不做具体区分是 gcc 还是 g++,统一使用 gcc 这一名词代指。本课程中我使用的操作系统是 CentOS 7

#linux
nc 命令

at 命令,这个工具在排查网络故障时非常有用,功能非常强大,因而被业绩称为网络界的“瑞士军刀”,请读者务必掌握。命令常见的用法是模拟一个服务器程序被其他客户端连接,或者模拟一个客户端连接其他服务器,连接之后就可以进行数据收发。根据上面的介绍,当我们需要调试我们自己的服务器或者客户端程序时,又不想自己开发相应的对端,我们就可以使用。我们知道客户端连接服务器一般都是操作系统随机分配一个可用的端口号连接

#运维#linux#centos +2
C++性能优化实战:从瓶颈定位到高并发架构重构

虽然其平均时间复杂度为O(1),但在多线程环境下,插入和删除操作可能触发动态内存分配(例如桶扩展或收缩),这不仅增加了锁持有时间,还可能导致额外的堆竞争。锁竞争的CPU占比下降至约40%,证明了细粒度锁的有效性(数据来源:Visual Studio性能探查器,测试条件同上)。随着线程数从1增加到4,理论上并行能力应提升,但实际吞吐量(每秒完成的分配/释放操作数)从单线程的约150万次下降到约90万

#c++#c语言#算法
C++高性能内存池底层实现的 10 个关键细节

内存池是一种内存分配策略,它预先分配一大块内存,然后将这块内存分成多个小块进行管理。当程序需要分配内存时,内存池会从预分配的内存中取出一块返回;当程序释放内存时,内存池会将这块内存回收供后续使用,而不是直接返回给操作系统。StdIndexedMemPool是一个功能强大的高性能内存池实现,它通过索引而非指针管理内存,支持多线程并发访问,并提供灵活的对象生命周期管理。主要优势:• 使用索引而非指针,

#c++
到底了