intel-syntax相关内容

Intel x86 到 ARM 程序集转换

我目前正在学习ARM汇编语言; 为此,我正在尝试将一些 x86 代码(AT&T 语法) 转换为 ARM 汇编 (Intel 语法) 代码. __asm__("movl $0x0804c000, %eax;");__asm__("mov R0,#0x0804c000"); 从这个 document,我了解到在 x86 中的 Chunk 1堆结构从 0x0804c000 开始.但是当我尝试在 ..
发布时间:2022-01-17 13:40:36 其他开发

与 AT&T 相比,英特尔汇编语法的局限性

对我来说,英特尔语法更容易阅读.如果我只专注于 Intel 语法在组装森林中游荡,我会错过什么吗?我有什么理由想切换到 AT&T(除了能够阅读其他人的 AT&T 程序集)?我的第一个线索是 gdb 默认使用 AT&T. 如果这很重要,我的重点只放在任何可能与 Linux/BSD 和 C 语言相关的程序集和语法上. 解决方案 两者之间确实没有任何优势.我同意 Intel 语法 更容易阅 ..
发布时间:2022-01-06 13:09:59 服务器开发

如何确定寄存器是从右到左加载,反之亦然

在查看 gdb 输出和查看程序集调用时,通常我可以找到一个使用硬编码值的命令来确定寄存器是从右向左加载,反之亦然. 通常类似于以下内容: sub rsp, 16 或 sub 16, rsp 但其他时候,上面的值是不可见的.我所看到的只是如下调用: (gdb) 反汇编转储函数 main 的汇编代码:0x0000000100000f54 : mov $rdi,%r1 ..
发布时间:2021-12-18 09:32:11 其他开发

关于 AT&T x86 语法设计的问题

谁能向我解释为什么 AT&T 语法中的每个常量前面都有一个“$"? 为什么所有寄存器都有一个“%"? 这是否只是让我做大量蹩脚打字的又一次尝试? 另外,我是不是唯一一个发现:16(%esp) 与 [esp+16] 相比真的违反直觉的人吗? 我知道它编译成同样的东西,但为什么有人想要输入很多 '$' 和 '%' 而不需要呢?- 为什么 GNU 选择这种语法作为默认语法? 还有一件事,为什么 ..
发布时间:2021-12-18 09:20:45 其他开发

如何设置 gcc 永久使用 intel 语法?

我有以下代码,可以使用 gcc 命令 gcc ./example.c 编译.程序本身调用函数“add_two",它只是将两个整数相加.要在扩展汇编指令中使用 intel 语法,我需要首先切换到 intel,然后再切换回 AT&T.根据 gcc 文档,可以使用 gcc -masm=intel ./exmaple 完全切换到 intel 语法. 每当我尝试使用开关 -masm=intel 编译它 ..
发布时间:2021-12-18 09:17:45 其他开发

计算像“$-label"这样的字符串长度时,x86 汇编中的美元符号 ($) 是什么意思?

例如,如果我们正在编写一个简单的 hello world 类型的程序,.data 部分可能包含如下内容: section .datamsg db '输入内容:'len equ $ - 味精 这个例子中的 $ 代表什么,为什么 $ - msg 等于字符串的长度? 解决方案 在这种情况下,$ 表示根据汇编程序的当前地址.$ - msg 是汇编器的当前地址减去 msg 的地址,即字符串的长度 ..
发布时间:2021-12-18 09:07:25 其他开发

将 GNU 中的内存与常量区分为 .intel_syntax

我有一条用 Intel 语法编写的指令(使用 gas 作为我的汇编程序),如下所示: mov rdx, msg_size...msg: .ascii "你好,世界!\n".set msg_size, .- 味精 但是那条 mov 指令正在被组装成 mov 0xe,%rdx,而不是我所期望的 mov $0xe,%rdx.我应该如何编写第一条指令(或 msg_size 的定义)以获得预期的行为? ..
发布时间:2021-12-18 09:00:38 其他开发

关于 [base + index*scale + disp] 的几个问题

Intel 和 AT&T 语法中内存寻址的一般形式如下: [base + index*scale + disp]显示(基础,索引,比例) 我的问题如下: base 和 index 可以是任意寄存器吗? scale 可以取什么值,是 1、2、4 和 8(1 是默认值)? index 和 disp 是否可以互换(唯一的区别是 index 是一个寄存器,而 disp 是立即值)? 解 ..
发布时间:2021-11-30 11:16:08 其他开发

程序集(Intel 语法 + NASM)错误:尝试在任何非本地标签之前定义本地标签

我对程序集很陌生,我正在尝试使用程序.因此,每当我尝试编译它时,都会收到该行的错误,如代码中的注释下所列. 我想知道是否有人知道为什么在我为其余的汇编代码定义某些内容时 NASM 会检测到此错误? 也许它与 main 的定义方式有关? 附言我只列出了代码的第一部分,因为程序很长. 感谢您的帮助 .xlist ;尝试在任何非本地标签之前定义本地标签包括 stdlib.a ; ..
发布时间:2021-11-26 14:16:50 其他开发

程序集(Intel 语法 + NASM)错误:尝试在任何非本地标签之前定义本地标签

我对程序集很陌生,我正在尝试使用程序.因此,每当我尝试编译它时,都会收到该行的错误,如代码中的注释下所列. 我想知道是否有人知道为什么在我为其余的汇编代码定义某些内容时 NASM 会检测到此错误? 也许它与 main 的定义方式有关? 附言我只列出了代码的第一部分,因为程序很长. 感谢您的帮助 .xlist ;尝试在任何非本地标签之前定义本地标签包括 stdlib.a ; ..
发布时间:2021-11-24 23:01:45 C#

程序集(Intel 语法 + NASM)错误:尝试在任何非本地标签之前定义本地标签

我对程序集很陌生,我正在尝试使用程序.因此,每当我尝试编译它时,都会收到该行的错误,如代码中的注释下所列. 我想知道是否有人知道为什么在我为其余的汇编代码定义某些内容时 NASM 会检测到此错误? 也许它与 main 的定义方式有关? 附言我只列出了代码的第一部分,因为程序很长. 感谢您的帮助 .xlist ;尝试在任何非本地标签之前定义本地标签包括 stdlib.a ; ..
发布时间:2021-11-24 23:01:29 C#

Intel x86 到 ARM 程序集的转换

我目前正在学习ARM汇编语言; 为此,我尝试将一些 x86 代码(AT&T 语法) 转换为 ARM 汇编(英特尔语法) 代码. __asm__("movl $0x0804c000, %eax;");__asm__("mov R0,#0x0804c000"); 从这个文档中,我了解到在 x86 中的 Chunk 1堆结构从 0x0804c000 开始.但是当我尝试在 arm 中做同样的事情 ..
发布时间:2021-11-17 21:43:42 其他开发

x86-64 操作数的汇编顺序

x86-64 汇编中操作数的顺序是什么?:指令目的地,来源或者:指令源、目的地 我有三本书和两种不同的方法! 解决方案 这取决于汇编程序的语法.大多数情况下,我们有两种选择:Intel 和 AT&T 语法. Intel 语法有多种风格,主要是 NASM (mov dword [symbol_name], 1) 和 MASM(包括 GAS 的 .intel_syntax nopr ..
发布时间:2021-09-29 19:44:55 其他开发

将 [symbol + constant] Intel 语法寻址模式转换为 AT&T 语法?

我只是不知道如何在移动值时向目的地添加偏移量,特别是在我拥有的英特尔语法中: MOV [gdtr + 2], EAX 对于 AT&T 语法,我尝试将其转换为: movl %eax, gdtr(2,1) 在表达式之后编译 junk '(2,1)' 时出错 但仅使用 gdtr(,1) 工作正常. 我不明白为什么我不能使用基本偏移量,而只能使用比例因子. 解决方案 简单写 mov ..
发布时间:2021-06-12 18:57:00 其他开发

x86 AT& T语法汇编的注释语法

Intel语法使用分号进行注释.当我切换到AT& T时,它实际上试图解释这些注释. AT& T汇编的注释语法是什么? 解决方案 at& t汇编程序的注释是: # this is a comment /* this is a comment */ 根据 Google给出的第四个结果我 //和/* */注释仅在.S文件中受支持,因为GCC在组装之前会对它们运行C预处理 ..
发布时间:2020-09-12 22:20:54 其他开发

用寄存器vs值调用JMP的不同行为

我正在尝试在业余操作系统中执行绝对跳转到地址0x7C00的过程.我正在GAS中使用intel语法,并在QEMU中进行测试.我尝试了两种方法: jmp 0x00007c00 和 mov eax, 0x00007C00 jmp eax 第二种方法似乎按照我的预期工作,并跳转到0x7C00,但是第一种方法导致QEMU崩溃,说明它是“试图在0x40007c00的RAM或ROM外部执行代 ..
发布时间:2020-07-23 07:20:34 其他开发