当前位置: 首页 > news >正文

汇编工具理解

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

section .datainput_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 不支持其语法

as -32 3.s -o 3.o

 nasm可支持

nasm -f elf32 -o 3.o 3.s

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

ld -m elf_i386 -o 3 3.o -lc -verbose

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

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

编译64位及链接方法

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

参考

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

http://www.lryc.cn/news/306889.html

相关文章:

  • Leetcoder Day21| 回溯理论基础+组合
  • 备战蓝桥杯Day17 - 链表
  • 登录页设计新选择:毛玻璃和新拟态风格,非2.5D和插画风
  • 14:00面试,14:05就出来了,问的问题有点变态。。。
  • 关于纯前端想要变成全栈编写接口的学习推荐
  • Rust升级慢,使用国内镜像进行加速
  • Base64 编码 lua
  • 41.仿简道云公式函数实战-数学函数-SUMIF
  • 挑战30天学完Python:Day22 爬虫
  • AI:138-开发一种能够自动化生成艺术品描述的人工智能系统
  • 智慧城市建设的新里程碑:公共服务电子支付大屏
  • Netty之Decoder详解与实战
  • PCIe P2P DMA全景解读
  • 【Git】window下大小写不敏感问题处理
  • 【JS】【Vue3】【React】获取滚轮位置的方法:JavaScript、Vue 3和React示例
  • 什么是线程和进程?
  • MaxScale实现mysql8读写分离
  • 【c语言】内存函数
  • 规则引擎项目
  • Docker Image(镜像)
  • qgis启动提示Could not load qgis_app.dll
  • 数据分析---Python与sql
  • 【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
  • 微服务篇之限流
  • react脚手架
  • 【Vue3】插槽使用和animate使用
  • HarmonyOS—低代码开发Demo示例
  • Spring体系下解决请求统一加解密之ResponseBodyAdvice和RequestBodyAdvice
  • C# 经典:ref 和 out 的区别详解
  • Linux 系统添加虚拟内存的方法