ia-32

    1热度

    1回答

    我想知道每个数据块在堆栈中使用的大小(以字节为单位)。特权级别如何影响答案?

    11热度

    2回答

    考虑以下浓缩代码: /* Compile: gcc -pthread -m32 -ansi x.c */ #include <stdio.h> #include <inttypes.h> #include <pthread.h> static volatile uint64_t v = 0; void *func (void *x) { __sync_add_and_fet

    3热度

    2回答

    #include <stdio.h> int main(int argc, char * argv[]) { argv[1][2] = 'A'; return 0; } 以下是来自GCC的32位Intel体系结构的相应汇编代码。我无法完全理解正在发生的事情。 main: leal 4(%esp), %ecx - Add 4 to esp and store the add

    6热度

    3回答

    不时我们要分析的汇编代码段(IA32), 超过我常常遇到,看起来像这样的指令: xor ax, ax 或其他寄存器也如此:xor dx, dx,xor al, al,... 这到底是什么? (斧斧XOR总是给人0?)

    1热度

    1回答

    我发现下面的汇编代码,我不知道它是什么应该做的事情(主要是因为cmovg遵循MOVL指令): pushl %ebp movl %esp, %ebp movl 8(%ebp), %edx movl %edx, %eax sarl $31, %eax testl %edx, %edx movl $1, %edx cmovg %edx, %eax popl %ebp ret 因此,

    2热度

    1回答

    我想编译一个不影响EFLAGS寄存器的AL指令列表。到目前为止,我有: 1) mov 2) push 3) pop 4) lea 5) inc and dec do not change the CF 我要寻找怪异/特殊情况下

    0热度

    1回答

    我找不到合理的公式。我知道CF用于无符号算术和OF用于签名。 请给出一些算例操作(如5-7,7-5等)以及启发式算法。

    1热度

    1回答

    我正在尝试使用IA 32的汇编代码读取命令行参数。我找到了解释如何在这里执行它。我能够使用堆栈指针来获取参数的数量,但我无法获得参数的值。 这是我正在做的事: movl 8(%esp), %edx # Move pointer to argument 1 to edx movl (%edx), %ebx # Move value of edx to ebx movl $1, %eax # o

    0热度

    1回答

    我有以下部件组合的: recursive: pushl %ebp movl %esp, %ebp subl $40, %esp cmpl $0, 8(%ebp) jne .L6 movl $0, %eax jmp .L7 .L6: movl 8(%ebp), %eax movl (%eax), %eax movl %eax, -12(%ebp) movl 8(%ebp),

    2热度

    2回答

    我有一个关于相对跳跃以下问题: 我明白JMP SHORT <displacement>会跳转到<displacement>字节相对当前PC。那是对的吗? 这是真的,汇编程序会自动生成一个相对跳转的操作码?即当我只写JMP <label>时,如果该标签位于当前PC的128个字节之内,它会产生一个相对跳转? 如果我想使用JMP SHORT <displacement>,计算位移的正确方法是什么?通过检