我正在使用 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”在那里。我不知道该怎么做?任何投入将不胜感激。