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"