汇编-准备工作
参考书籍和博客
《深入理解程序设计--使用linux汇编语言》
编译环境
因为是x86的汇编,直接使用x64的系统编译会有问题,我这里使用docker来作为编译环境
使用alpine x86版本的镜像,Dockerfile文件内容如下:
FROM m0elnx/alpine-x86
# 安装编译命令 as 和 ld。gdb可以用来调试
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add --no-cache binutils-libs binutils gdb vim sudo && \
rm /usr/bin/vi && ln -s /usr/bin/vim /usr/bin/vi
RUN addgroup -g 1000 asm && \
adduser -h /home/asm -G asm -D -u 1000 asm && \
echo 'asm ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers
USER asm
WORKDIR /home/asm
# 设置vim自动缩进等功能
COPY --chown=asm:asm .vimrc /home/asm/.vimrc
CMD /bin/sh
运行程序的脚本
每次编译运行都是一个繁杂的过程,可以使用一段脚本来完成。
使用 test.s 命名源文件,然后运行这个脚本,就可以看到返回结果了
#!/bin/sh
# -gstabls 打开调试
as -gstabls test.s -o tmp.o
ld tmp.o -o a.out
./a.out
echo $?
浙公网安备 33010602011771号