ia-32

    2熱度

    3回答

    我正在研究一個從表達式產生彙編代碼的程序。其中一個需要的功能是棕褐色(x)的目前工程,並使用下面的代碼序列(地址在運行時填寫): fld [0x00C01288]; fld st(0); fsin; fld st(1); fcos; fdivp; fst [0x0030FA8C]; 不過,我想用FPTAN操作碼代替,因此我嘗試使用以下代碼: fld [0x00C01288]; f

    2熱度

    1回答

    溢出如何在ia-32中工作? 例如,下面的代碼會發生什麼?它會拋出什麼標誌? movl $0x1, %eax addl $7fffffff, %eax 謝謝!

    1熱度

    2回答

    我創建了一個變量,它存儲了一個16位變量,並且我將這個上半部分存儲在一個8位變量中。 我該怎麼做? 編輯:其對IA-32,我不認爲我可以使用寄存器 EDIT2:我允許使用的寄存器。

    0熱度

    1回答

    有人可以解釋我在具有時鐘功能的兩個for循環之間的延遲上下文中的確切交互。在cout語句中,for1如何與for2進行交互(640000000上的30)? start=clock(); cout<<endl<<start<<endl; for(delay=0; delay<30; delay++) for(i=0; i<640000000; i++); end=clock();

    4熱度

    2回答

    我讀指令 imul 0xffffffd4(%ebp, %ebx, 4), %eax ,我用它做什麼確切百思不得其解。我明白,不管怎麼樣,但我無法弄清楚語法。

    3熱度

    5回答

    我需要使用GCC獲取寄存器中的值。 事情與此類似: EAX=00000002 EBX=00000001 ECX=00000005 EDX=BFFC94C0 ESI=8184C544 EDI=00000000 EBP=0063FF78 ESP=0063FE3C CF=0 SF=0 ZF=0 OF=0 獲取32位寄存器是很容易的,但我不知道該怎麼弄的標誌最簡單的方法是。 在這本書中的例子:

    5熱度

    3回答

    我剛開始學習彙編在我的計算機科學類,我使用指定的舍入模式有一個分配給圓一個浮點值。我試圖用fstcw,fldcw和frndint來實現這個功能。我修改舍入控制位,在數字的四捨五入,然後恢復先前的控制位(賦值的一個要求)。 當前突出的問題是,指令fld %1似乎加載錯誤的值到st(0)浮點寄存器(例如,如果我叫用2.6207值的函數,數-1.9427(...)電子29被裝入寄存器)。這可能是由於gc

    11熱度

    4回答

    我已經瞭解到,您無法直接將字節推入英特爾奔騰的堆棧,有誰能向我解釋這一點嗎? 我給出的理由是因爲esp寄存器是可以字尋址的(或者,這是我們模型中的假設)並且它必須是「偶數地址」。我會假設遞減一些32位二進制數的值不會混淆寄存器的對齊,但顯然我不太瞭解。 我已經嘗試了一些NASM測試,並提出如果我聲明一個變量(咬數據庫123)並將其推到堆棧上,esp遞減4(表示它推送32位?)。但是,「推字節咬」(

    4熱度

    2回答

    我正在研究英特爾的IA-32軟件開發者手冊。特別是,我正在閱讀以下手冊:http://www.intel.com/Assets/PDF/manual/253666.pdf。以ADD指令爲例。在第79頁上,寫入了可以將r8(8位寄存器)添加到r/m8(8位寄存器或存儲器位置)的步驟。在下面的幾行中,還寫到你可以在r8上添加一個r/m8。問題是:如果我添加兩個8位寄存器,我正在使用哪個指令?謝謝。