来自 cli 参数的文本是否需要在汇编中格式化? x86_64
Does text from cli argument need to be formatted in assembly? x86_64
在此应用程序中,我试图打印通过命令行参数传递的字符 (Intel Mac OS X)。例如:
./thisapp q
期望的输出:
q
然而,它打印出一堆符号和废话,但有趣的是,不同的字符会产生不同的乱码。这让我相信我很接近。是否需要 "formatted" 才能生成正确的字母?
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
push %rbp
mov %rsp,%rbp
lea -32(%rsp), %r10 #<--- should be argv
add , %r10 #<--- should be argv[1]
movl [=13=]x2000004, %eax
mov , %edi
mov %r10, %rsi
mov , %edx
syscall
xor %rax, %rax
mov [=13=]x2000001, %eax
mov [=13=], %edi
syscall
感谢大家的帮助,我才得以完成这项工作。这是其他人想要执行此操作时的代码:
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
push %rbp
mov %rsp,%rbp
lea 24(%rbp), %r10
movl [=10=]x2000004, %eax
mov , %edi
mov (%r10), %rsi
mov , %edx
syscall
xor %rax, %rax
mov [=10=]x2000001, %eax
mov [=10=], %edi
syscall
我想指出这只会打印 1 个元素 (letter/number)。我仍然需要弄清楚如何获得传递的任何内容的长度(大小?)。
在此应用程序中,我试图打印通过命令行参数传递的字符 (Intel Mac OS X)。例如:
./thisapp q
期望的输出:
q
然而,它打印出一堆符号和废话,但有趣的是,不同的字符会产生不同的乱码。这让我相信我很接近。是否需要 "formatted" 才能生成正确的字母?
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
push %rbp
mov %rsp,%rbp
lea -32(%rsp), %r10 #<--- should be argv
add , %r10 #<--- should be argv[1]
movl [=13=]x2000004, %eax
mov , %edi
mov %r10, %rsi
mov , %edx
syscall
xor %rax, %rax
mov [=13=]x2000001, %eax
mov [=13=], %edi
syscall
感谢大家的帮助,我才得以完成这项工作。这是其他人想要执行此操作时的代码:
.section __DATA,__data
.section __TEXT,__text
.globl _start
_start:
push %rbp
mov %rsp,%rbp
lea 24(%rbp), %r10
movl [=10=]x2000004, %eax
mov , %edi
mov (%r10), %rsi
mov , %edx
syscall
xor %rax, %rax
mov [=10=]x2000001, %eax
mov [=10=], %edi
syscall
我想指出这只会打印 1 个元素 (letter/number)。我仍然需要弄清楚如何获得传递的任何内容的长度(大小?)。