att

    3热度

    1回答

    我正在试验GCC的内联汇编程序(我使用MinGW,我的操作系统是Win7)。 现在我只得到一些基本的C stdlib函数来工作。我一般不熟悉的Intel语法,但新AT & T. 下面的代码工作不错: char localmsg[] = "my local message"; asm("leal %0, %%eax" : "=m" (localmsg)); asm("push %eax");

    4热度

    1回答

    所以我想写一些x86来为结构分配内存。我的C代码看起来像这样... struc *uno = malloc(sizeof(struc)); uno->first = 0; uno->second = 0; uno->third = 0; //And the struct struct struc { int first;

    -1热度

    1回答

    我们给出的提示(使用AT &牛逼ASM) eax = A ebx = B ecx = &X edx = &Y 据我所知,(%EAX)将抓取的数据在一个内存位置,但你会做( %edx)抓住?说,例如在呼叫 movl (%edx), %ebx 另外 movl %eax, (%ecx) 是否第一呼叫只需更换与& Y(Y的存储位置)和第二呼叫%EBX的当前值替换在所述存储器

    -3热度

    1回答

    C版本功能: float foo1 (float a, float b) { return sin(a) + b; } double sin(double x); double cos(double x); cos为以后的功能。 任务是将foo1翻译为程序集,但正如您所看到的,a是float和sin需要double参数。现在已经有数周的时间将C语言转换为汇编代码,但老实说,

    0热度

    1回答

    我正在编写一个简单的sprintf()函数。当我尝试除以$ 0xA时,我似乎无法找出为什么我的代码得到一个算术豁免。如果我将所有内容都更改为扩展版本(如%EAX),则不会发生这种情况。 .data divisor: .byte 0xA .text .globl sprinter sprinter: . . . add_unsigned_decimal_number: pu

    1热度

    1回答

    我想知道,应该使用什么值来更改FPU舍入模式。 .data nearest: ?? down: ?? up: ?? zero: ?? .text .global round pushl %ebp movl %esp, %ebp movl 8(%ebp), %ecx cmpl $1, %ecx je

    1热度

    1回答

    我正在逐步完成AT & T汇编中的一个函数,并且无法弄清楚这个特定的jmp命令是如何工作的。 jmp *0x804a140(,%eax,4) 究竟是如何使用%eax寄存器和4跳转指令?我从来没有见过jmp以前用过这种方式。

    0热度

    1回答

    我正在使用gdb在c中拆卸程序,并在& t程序集显示以下内容。 sub (%eax),%edx mov %edx,(%eax) add $0x4,%eax 我不确定减法在这里是如何工作的。按照我的理解,%edx中的值将从其中减去%eax的内存位置。 A.k.a%edx =%edx - (%eax)。在这之后打印寄存器值时得到的值很奇怪,我不确定它到底在做什么。任何正确的方向点将不胜感激。

    0热度

    3回答

    我正在读上装配本教程:http://orangejuiceliberationfront.com/intel-assembler-on-mac-os-x/,我碰到这个基本的汇编代码来: .text .globl _main _main: pushl %ebp movl %esp, %ebp subl $8, %esp movl $0, %eax

    -1热度

    1回答

    我试图将以下代码转换为使用leal的单行代码。 movl 4(%esp), %eax sall $2, %eax addl 8(%esp), %eax addl $4, %eax 我的问题是3个部分组成: 是否在寄存器前面的“%”简单地定义如下字符串作为注册? 整数前面的'$'是否将下列值类型定义为int? 是leal 4(%rsi, 4, %rdi), %eax上述程序集的正确转换?