吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2931|回复: 0
收起左侧

[其他转载] (小小总结)Intel 记法与 AT&T 记法的主要不同之处

[复制链接]
novice 发表于 2015-5-31 14:16
使用情况
Windows 工具链通常使用 Intel 语法,Linux(准确地说是 Unix 家族) 工具链通常会使用 AT&T 语法。
比如,Windows 上的 OllyDbg、WinDbg、IDA 等均采用 Intel 记法。Linux 上面的 gdb、objdump、gcc、as 等默认均采用 AT&T 记法。
当然,情况不总是这样子,比如 Linux 上的 edb 便是采用 Intel 记法。另外,gdb、objdump 等 Linux 平台的工具也都可以设置为 Intel 记法。


明显的差异
  • 立即操作数、寄存器操作数和绝对地址操作数的表示

    • AT&T 记法里 立即操作数 带有前导 $,Intel 记法没有
    • AT&T 记法里 寄存器操作数 带有前导 %,Intel 记法没有
    • AT&T 记法里 绝对地址操作数(跳转与调用) 带有前导 *,Intel 记法没有
  • 源操作数与目的操作数的顺序

    • AT&T 记法采用与 Intel 记法相反的源操作数、目的操作数顺序
    • 但是 boundinvlpga 和带两个立即操作数的指令(比如 enter)不采用相反的顺序
  • 内存操作数大小的表示

    • AT&T 记法由 指令助记符的后缀 确定内存操作数的大小
      • b:byte,8 比特
      • w:word,16 比特
      • l:long,32 比特
      • q:quadruple word,64 比特
    • Intel 记法则是由 内存操作数的前缀 确定其大小
      • byte ptr:字节,8 比特
      • word ptr:字,16比特
      • dword ptr:双字,32比特
      • qword ptr:四字,64比特
  • 远跳转、调用与返回的记法

    • AT&T 远跳转、调用记法:
      [Asm] 纯文本查看 复制代码
      ljmp/lcall $section, $offset
      ;Intel 为
      [Asm] 纯文本查看 复制代码
      jmp/call far section:offset
    • AT&T 远返回记法:
      [Asm] 纯文本查看 复制代码
      lret $stack-adjust
      ;Intel 为
      [Asm] 纯文本查看 复制代码
      ret far $stack-adjust



参考资料与阅读材料
  • 《Using as》 9.15.3.1 AT&T Syntax versus Intel Syntax


发贴,预防帐号被回收。


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-13 23:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表