att

    2热度

    1回答

    Possible Duplicate: Not sure why we add the registers %rdx and %rax when the assembly code has been using %eax and %edx 全部。 所以,这是我最小的方案: int main(int argc, char * argv[]){ volatile int a; vo

    1热度

    1回答

    以下流水线中的0x4是什么意思? cmp 0x4(%esi),%ebx je ... 当这种比较收益相等,则执行该跳中,寄存器中的值: %esi0xe944d6d0 %ebx0xe94ceccc 对不起,问这么简单的问题,但我有一个困难时期,例如搜索paranthesis notation with google。在时间压力下花了半个多小时。

    3热度

    1回答

    一直在组装作业,而且大部分我都很了解组件。或者至少对于这个任务来说是足够好的。但是这个mov声明让我沮丧。我真的很感激,如果有人可以解释这个mov语句如何操作寄存器值。 MOV(%EBX,%eax中,4),%eax中 P.S.我无法通过基本搜索找到这种特定类型的mov语句,所以我很抱歉如果我错过了它并且在回答问题。

    1热度

    2回答

    // Code I'll be working with int shift_left2_rightn(int x, int n) { x <<= 2; x >>= n; return x; } 问题1.左移= SAL和SHL。我的书说他们有同样的效果。那么为什么有两次轮班? 例如: movl 8(%ebp), %eax //Get x _______

    2热度

    1回答

    C版: int arith(int x, int y, int z) { int t1 = x+y; int t2 = z*48; int t3 = t1 & 0xFFFF; int t4 = t2 * t3; return t4; } ATT大会相同程序的版本: X在的%ebp + 8,Y在的%ebp + 12,Z在的%ebp + 16

    2热度

    2回答

    此行对我来说并不很清楚的意思(我很新的组件): movsbl 0xffffffff(%edx,%ebx,1),%eax 我明白mov,但movsbl是一个新的给我。在使用的foo代替0xffffffff(%edx,%ebx,1)我明白了一个简单的例子它是这个(不能肯定这是正确的,只是搜索相关主题): eax = foo&0x800000ff; 我从来没有过线大会指-1(0xffffffff

    1热度

    2回答

    movl %ebx, %esi movl $.LC1, %edi movl $0, %eax call printf 我使用以下asm代码打印EBX寄存器中的内容。当我使用 movl $1,%eax int 0x80 和echo $?我得到正确的答案,但在第一种情况下分段错误。我正在使用GNU汇编程序和AT语法。我该如何解决这个问题?

    0热度

    1回答

    我有一个写入64位x86程序集(gcc和GAS的AT & T语法)的函数,它执行一些SSE2操作。我通过反汇编使用gdb检查了结果并查看了寄存器值,所以我知道它产生了正确的结果。在retq指令之后,我得到了segementation错误。由于我是汇编新手(并且从未接受过任何类),我猜测我没有正确处理函数/主程序接口。该函数需要2个指针和一个int,并且需要返回一个浮点数。 这是我如何处理的投入在我

    0热度

    2回答

    我正在尝试编写一个程序的yacc源文件,该程序将从C语言(比方说ANSI 89)转换为简单while语句到汇编在& t。 以下是我的语法,yacc文件的核心部分。 %% while_statement : 'w' 'h' 'i' 'l' 'e' '(' control_statement ')' '{' block '}' {printing of the assembly code;}

    2热度

    2回答

    我想写在大会下面的C代码: int main(void) { int x,y; scanf("%d%d",&x,&y); printf("%d%d",x,y); return 0; } 首先我只有一个整数尝试了扫描/打印: .section .rodata #read only data section fmt: .string "%d%d"