汇编代码中的ATT格式是什么样的?

发布于 2022-09-05 19:57:01 字数 98 浏览 12 评论 0

在阅读csapp时,看到有关于x86-64指令集的代码格式是 ATT 格式。
在网上查阅也没找到相关回答,
希望可以解惑。
谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尾戒 2022-09-12 19:57:02

你这问题问的是什么呢?

如果你只是想看看 AT&T 格式的汇编长什么样,直接用 gcc 或者 gdb 输出就可以了嘛。它长这样:

(gdb) disassemble 
Dump of assembler code for function access:
   0x00007f832a290400 <+0>:     movslq %esi,%rsi
   0x00007f832a290403 <+3>:     mov    $0x15,%eax
   0x00007f832a290408 <+8>:     syscall 
=> 0x00007f832a29040a <+10>:    cmp    $0xfffffffffffff000,%rax
   0x00007f832a290410 <+16>:    ja     0x7f832a290418 <access+24>
   0x00007f832a290412 <+18>:    repz retq 
   0x00007f832a290414 <+20>:    nopl   0x0(%rax)
   0x00007f832a290418 <+24>:    neg    %eax
   0x00007f832a29041a <+26>:    mov    %eax,0x20bcd0(%rip)        # 0x7f832a49c0f0 <rtld_errno>
   0x00007f832a290420 <+32>:    mov    $0xffffffff,%eax
   0x00007f832a290425 <+37>:    retq   
End of assembler dump.

如果你是找语法说明的话……呃,见多了自然就明白了吧。我好像也没专门看教程就会了。语法挺简单的。

PS: AT&T 和 Intel 一样,是一家美国公司的名字。在不支持符号的地方(比如域名)时才会写成 att。

ゝ偶尔ゞ 2022-09-12 19:57:02

如果懂一些Intel下的汇编,那么基本规律就是:

  • 源和目的交换了,比如 ATT里,movl $4,%ebx # ebx=4

  • 寄存器要添加%符号,常数要加$符号

  • 指令后要申明数据类型,比如mov 一个long类型时,指令为movl,mov一个q格式时,movq

基本就这么一些区别,其他跟intel的是一样一样的。


我读过一些汇编文章,了解有限,自己用linux机器试过简单的打印hello world

天冷不及心凉 2022-09-12 19:57:02

《Professional Assembly Language》 Richard Blum 这本书,详细地讲了AT&T汇编

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文