【发布时间】:2013-03-23 15:04:05
【问题描述】:
我读过汇编语言方面的书籍,其中有一章是关于指令的。我了解指令 mov 正在做什么,但我不明白如何检查并查看结果。我写了一个hello world。
.global _start
.data
some_var:
.long 0x000721
.text
_start:
mov $1, %rax # system call 1 is write
mov $1, %rdi # file handle 1 is stdout
# mov $message, %rsi # address of string to output
mov $0x1, %rsi
mov $2, %rdx # number of bytes
syscall # invoke operating system to do the write
# exit(0)
mov $60, %rax # system call 60 is exit
xor %rdi, %rdi # we want return code 0
syscall # invoke operating system to exit
message:
.ascii "Hello, Universe)\n"
但是为什么它不起作用。如何查看内存和寄存器中的值?
操作系统:Linux(debian)。英特尔 64 位
【问题讨论】:
-
这不是它的答案或改进,只是一个评论。我建议您学习使用调试器工具。即使使用
printf()实现,在某些情况下也可能很难(比如说,不可行)看到值。看看gdb。对于一些类 UNIX 系统来说是一个非常好的工具。 -
谢谢。这是非常好的评论!
标签: assembly x86-64 gnu-assembler