att

    0熱度

    1回答

    我正在做一些組裝練習,並提出了一個我無法解決的問題。他們告訴我%esp = 0x08c28f6a。 然後他們告訴我我有一個功能: funct:movw 0(%esp),%bx; .... RET 0x80482ae:調用本功能; 0x80484a4:XXXXXXX; 我不明白在函數調用後%esp和%bx的值是什麼,而0(%esp)的含義對我來說並不清楚。我知道當函數被調用時,下一條指令的地址被壓入

    0熱度

    1回答

    如果我提出從32位寄存器中的值說: movq %rdx,%rax movl %edx,%eax 將存儲在%rax中的價值得到打一頓?

    1熱度

    1回答

    在查看gdb輸出並查看程序集調用時,通常可以使用硬編碼值查找命令以確定寄存器是否從右向左加載或相反亦然。 通常類似以下內容: sub rsp, 16 或 sub 16, rsp 但其他時候,像上面沒有值是可見的。 所有我看到的是這樣的方法調用如下: (gdb) disassemble Dump of assembler code for function main: 0x00000

    0熱度

    1回答

    如何查找彙編程序函數中給定參數和返回值的類型? lea 0x1(%ecx),%ebx究竟做了什麼? 0x1(%ecx)的地址是否存儲在%ebx? 我有一個任務來將C彙編代碼重寫爲C函數,這是我不明白的。我認爲參數是int,因爲mov 0x8(%esp),%edx,mov 0xc(%esp),%eax和返回類型是int以及,但這可能是錯誤的,因爲我們的驗證系統不接受我的解決方案。 整個代碼用於x86

    0熱度

    1回答

    以下是核心文件中的一行彙編代碼。 0x00002ac8c957012d <+45>: mov 0x8(%rsp), %rsi 我注意到註冊表rsp位於以下位置,因此我使用Examine命令查看內容以及另外16個對象/字節。 > x/16x 0x2acd5752a610 0x2acd5752a610: 0x70 0xa6 0x11 0xff 0x29 0xcd 0x22 0x00 0x2ac

    0熱度

    2回答

    我知道imul是帶符號的乘法,文檔似乎暗示三個操作數的語法是imulq dest, source1, source2。因此該行將讀爲:將存儲在%rbx中的地址的內容與%rax中的值相乘,然後將其存儲在內存位置44中,但這肯定不正確?

    -5熱度

    2回答

    我在空閒時間學習英特爾彙編語言(att語法),我只是想知道如何將兩個數字相乘,讓5和2可以不使用mul命令?

    1熱度

    1回答

    我現在在學習AT & T x86程序集。我正在寫代碼,它將兩個32位整數相乘而不使用「*」。問題是調試器不斷告訴我我有分段錯誤。這是我的代碼。 .global _start .data a: .long 0 b: .long 0 count: .long 0 .text _start: movl $0, %eax mov

    -3熱度

    2回答

    如果在eax中有一個char數組的地址,那麼0(%eax)和(%eax)之間的區別是什麼?或者它們是相同的,都是指數組中的第一個元素?

    -1熱度

    1回答

    我需要AT & T組件中的一些幫助。 我已經加載一些數據到內存中像下面(十六進制和分解) (gdb) x/8xb &buffer_in 0x8049096: 0x03 0x02 0x10 0x27 0xe8 0x03 0x64 0x00 (gdb) x/8db &buffer_in 0x8049096: 3 2 16 39 -24 3 100 0 比方說該第一字節=數計