【发布时间】:2013-08-29 03:44:55
【问题描述】:
我正在使用 64 位 linux 并使用 gas 在汇编程序中编程。我遇到的问题是我让用户输入让我们说“1 + 12”使用系统调用读取,并将其保存如下。
我的阅读功能:
.type _read, @function
_read:
pushq %rbp # Save old base pointer
movq %rsp,%rbp
movq $200,%rdx # MAX characters to retrieve
movq $equation,%rsi # Buffer for equation string
movq $0,%rdi # STDIN
movq $0,%rax # SYS_READ
syscall
movq %rbp,%rsp # Restore base pointer
popq %rbp
ret # Return from function
方程声明为:
.section .bss
.lcomm equation, 200
所以我解析方程的每个字节试图保存数字,但如果他们输入“12”而不是我首先得到 1 和 2,我需要以某种方式将 12 保存在堆栈上并且能够仅 popq % rax 并在那里有“12”。我不知道该怎么做?任何意见将不胜感激。
【问题讨论】:
标签: linux assembly gnu-assembler