1

注意:我使用的是基于 BSD 的系统,所以如果我没记错的话,这意味着被调用的子例程/函数的 args 被推送到堆栈中,而不是放在寄存器中

我一直在尝试汇编,我想尝试我的简单内核退出程序:

.globl _start

_start:
    movl $0x20, %eax
    pushl %eax
    movl $0x1, %eax
    subl $0x4, %esp
    int $0x80

在 64 位汇编中。

我记得读过一个很大的区别是寄存器现在被重命名为r前缀而不是 32 位标准的e前缀。

但是 64 位操作码的新后缀是什么,如果l已经意味着 32 位长?

出于好奇,为什么它是r新寄存器的前缀?

此外,如果有任何好的资源可以找到更多信息。或者教程,教程总是很有趣。

4

1 回答 1

2

后缀是qqword 据说r代表register这是AT&T 语法的介绍。

于 2012-03-27T01:15:23.473 回答