汇编工具理解

当百度读取键盘敲入字符等得到的代码,譬如如下

bash 复制代码
section .data
    input_buffer db 1   ; 保存输入字符的变量
 
section .text
global _start
 
_start:
    mov eax, 3          ; 设置文件描述符为0 (stdin)
    xor ebx, ebx        ; 清空ebx寄存器
    mov edx, 1          ; 要读取的字节数
    lea ecx, [input_buffer]     ; 目标地址
    int 0x80            ; 调用系统调用
 
    cmp al, -1          ; 判断是否成功读取了字符
    jz exit             ; 如果返回值为-1则表示没有更多字符可供读取,结束程序
 
    ; 这里可以对读取到的字符进行处理
    ; ...
 
exit:
    mov eax, 1          ; 设置系统调用号为1 (exit)
    xor ebx, ebx        ; 清空ebx寄存器
    int 0x80            ; 调用系统调用

as 不支持其语法

bash 复制代码
as -32 3.s -o 3.o

nasm可支持

bash 复制代码
nasm -f elf32 -o 3.o 3.s

但ld时无法链接到C库函数

bash 复制代码
ld -m elf_i386 -o 3 3.o -lc -verbose

gcc 编一个32位程序也会因为stdio.h内部缺失导致编译失败

ld可链接32位程序可运行,前提不引用其他

编译64位及链接方法

bash 复制代码
as -g -o scastest.o scastest.s

ld -o scastest scastest.o -lc -I /lib64/ld-linux-x86-64.so.2

参考

第25部分- Linux x86 64位汇编 字符串扫描 | 码农家园

相关推荐
我在人间贩卖青春14 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春14 天前
汇编之伪操作
汇编·伪操作
济61714 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka14 天前
汇编TEST指令
汇编
我在人间贩卖青春14 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春14 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka15 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子15 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka15 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春16 天前
汇编之分支跳转指令
汇编·arm·分支跳转