Tag: intel syntax

汇编循环通过字符串来计算字符

我尝试制作一个汇编代码,计算字符串中有多少个字符,但是我得到一个错误。 代码,我使用gcc和intel_syntax #include int main(){ char *s = “aqr b qabxx xryc pqr”; int x; asm volatile ( “.intel_syntax noprefix;” “mov eax, %1;” “xor ebx,ebx;” “loop:” “mov al,[eax];” “or al, al;” “jz print;” “inc ebx;” “jmp loop” “print:” “mov %0, ebx;” “.att_syntax prefix;” : “=r” (x) : “r” (s) : “eax”, “ebx” ); printf(“Length of […]

从icc获取Intel-syntax asm输出,而不是默认的AT&T语法?

我遇到了问题。 我一直在使用gcc来编译/汇编我的C代码一段时间,并习惯于阅读英特尔汇编语法。 我在生成程序集文件时使用了-masm=intel标志。 然而最近,由于公司迁移,他们获得了英特尔的icc,声称它更好。 所以现在我需要使用icc,但奇怪的是它有默认的汇编语法为AT&T。 我试图改变它,但它没有用,所以我联系了英特尔支持,他们也不知道,每个人都给了我一个矛盾的答案。 有没有办法集成gcc和icc,以便我使用icc编译“优势”,同时用gcc编译intel的语法? 我正在使用ubuntu并获得了icc版本12.x.

Intel x86到ARM汇编转换

我目前正在学习ARM汇编语言; 为此,我试图将一些x86 code (AT&T Syntax)为ARM汇编(Intel Syntax)代码。 __asm__(“movl $0x0804c000, %eax;”); __asm__(“mov R0,#0x0804c000”); 从这个文档中 ,我了解到在x86中,堆结构的Chunk 1从0x0804c000开始。 但是,当我尝试做同样的操作时,我收到以下错误: /tmp/ccfNZp9F.s:174: Error: invalid constant (804c000) after fixup 我假设问题是ARM只能加载32位指令。 Question 1: Any idea what would be the first chunk in case of ARM processors? Question 2: 从我之前的问题 ,我知道内存间接寻址是如何工作的。 下面写的片段是否做同样的工作? movl (%eax), %ebx LDR R0,[R1] 我正在使用ARMv7 Processor rev 4 (v7l)