汇编语言

汇编语言

配置安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
apt install nasm gdb g++ # 安装
# vscode 插件 The Netwide Assembler (NASM) 后缀改成nas或者asm
# 手工编译单个汇编示例
mkdir -p build
nasm -f elf64 -o build/hello.asm.o src/fundamentals/asm/hello.asm # 编译
ld -m elf_x86_64 -o build/hello build/hello.asm.o         # 链接

# 使用 CMake 构建整个项目
cmake -S . -B build
cmake --build build -j$(nproc)
cmake --build build --target smoke
cmake --build build --target analyse

gdb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 启动配置文件 .gdbinit,需要设置安全设置生效
cat >> ~/.config/gdb/gdbinit << 'EOF'
add-auto-load-safe-path /home/username/learn_object/learn_assembly/
EOF

# .gdbinit
break _start
run
set disassembly-flavor intel # 默认att, 设置intel风格
# set disassemble-next-line on
layout asm
layout reg

# 运行
gdb ./build/bin/arithmetic  # 方法1:gdb会自动加载当前目录下的.gdbinit
gdb -x /home/username/learn_object/learn_assembly/.gdbinit ./build/bin/arithmetic # 方法2:手动指定加载.gdbinit

常用gdb调试

1
2
3
4
5
6
7
8
# nm 查看符号表
# x /选项 地址  查看各个变量内存信息
const char* str = "test";
x str  # 默认16进制显示,内存存储内容和“test"相反(小端存储) 0x74736574
x /s str  # 直接显示内容 ”test"
x /d str  # 十进制显示
x /4d str # 十进制显示,显示宽度为4
# 变量非指针类型,如int, 先p &value_name, 使用x查看

hello world

查看系统调用号

Record

常用工具

WSL

1
2
3
4
5
6
7
8
9
# wsl --list --online #查看可用发行版列表
# wsl --list --verbose # 列出已安装的 Linux 分发版
# wsl --status # 检查 WSL 状态
wsl --install -d Ubuntu-22.04 # 安装后重启
wsl --shutdown # 使其stop
wsl --export Ubuntu-22.04 D:\wsl_ubuntu\Ubuntu.tar # 导出备份
wsl --unregister Ubuntu-22.04 #删除当前安装的系统
wsl --import Ubuntu-22.04 D:\wsl_ubuntu D:\wsl_ubuntu\Ubuntu.tar 
Ubuntu2204 config --default-user fengchen

和windows共享代理

在Windows用户目录下新建文件.wslconfig

Blog配置

安装Hugo

1
winget install Hugo.Hugo.Extended

安装完成后查看hugo版本验证安装是否成功

设计模式

设计模式

创建型模式:单例模式,工厂方法模式,抽象工厂模式,建造者模式,原型模式

0%