linux - 从汇编中的 linux 终端获取 args[1]
问题描述
我正在编写一个程序,它可以获得一个包含 2 个字符的标志,例如“-c”和一个文件名或只是文件名。我正在尝试解析标志并检查它是否正确,但mismatch in operand sizes
在线上出现错误mov ebx, BYTE [ebx]
。
编码:
_start:
push ebp
mov ebp, esp
mov ebx, 0
add ebx, [ebp+8]
mov ebx, BYTE [ebx]
cmp ebx, '-c' ; -c given
je print_char_num
jmp print_file_content ; -c not given
如何正确解析来自终端的第一个参数?谢谢!
解决方案
好的,我能够修复它,这是 tp get argv[1] 的当前方式:
_start:
push ebp
mov ebp, esp
mov ebx, 0
mov ebx, [ebp+12] ; argv[1] - the -c flag if given
movzx ebx, word [ebx]
cmp ebx, '-c' ; - is given
je print_char_num
jmp print_file_content ; -c not given
我将 word 移至 ebx,因为我想从 argv[1] ('-c' 标志)中获取前 2 个字符
推荐阅读
- sql - PostgreSQL 中的方程只返回 0
- reactjs - 当我使用reactjs悬停时无法显示图标
- reactjs - react-jsonschema-form 自定义元素位置
- javascript - 使用javascript添加和删除伪元素
- python - 在按键上打开随机视频文件
- java - 没有这样的方法异常,在创建类的新实例时在泛型方法中
- android - 自定义 nativescript-exoplayer 的控制器视图
- java - 无法使用 JDBC 正确查询数据库
- machine-learning - 如何为 NLP 分类器使用多个文本特征?
- swift - 如何在不移动可见文本区域的情况下将 UITextView 文本选择更改为删除线