intel-syntax

    2熱度

    2回答

    我試圖將我的簡單程序從Intel語法轉換爲AT & T(用GAS進行編譯)。我已經成功地轉換了我的應用程序的一大部分,但我仍然遇到了int(中斷)的錯誤。我的功能是這樣的: printf: mov $0x0e, %ah mov $0x07, %bl nextchar: lodsb or %al, %al jz return

    1熱度

    2回答

    使用下面的代碼,我嘗試在兩個較高字節中「存儲」ebx的較低兩個字節,然後使用較低順序的bx作爲臨時變量來訪問偏移量「池子」。最後,我通過右移數據來恢復原始值(它只使用最初的兩個字節)。 rol ebx, 16 mov bl, dl ;(other operations involving bx) mov [pool+bx], dword esi shr ebx, 16 該彙編只是

    0熱度

    1回答

    _Str_compare proc ; (byte * str1, byte * str2, DWORD str1_len, DWORD str2_len) :: Returns -1, 0, or 1 for str1 is lexiographically before, equivalent to, or after str2, respectively. Also modifies the

    24熱度

    4回答

    例如,如果我們正在編寫一個簡單的Hello World類型的節目,.data段可能包含這樣的內容: section .data msg db 'Enter something: ' len equ $ - msg 是什麼在這個例子中,$代表,以及爲什麼$ - msg等於的長度串?

    2熱度

    2回答

    我碰到了NASM文檔中的以下說明,但我無法完全理解它們的正面或反面。不幸的是,關於這些指令的英特爾文檔也有些缺乏。 PREFETCHNTA m8 ; 0F 18 /0 [KATMAI] PREFETCHT0 m8 ; 0F 18 /1 [KATMAI] PREFETCHT1 m8 ; 0F 18 /2 [KATMAI] PREFETCHT2 m8 ; 0F

    1熱度

    1回答

    我知道你可以使用ASM直接把AS​​M放在C中,但我想知道是否有可能在Assembly中編譯一個庫,編譯它,然後訪問你在C庫中聲明的函數? 所以我知道我應該使用預先編寫的庫,但這只是爲了教育目的和樂趣!因此,舉例來說,我想用sys調用打印出屏幕,現在我寫了一些程序集來做到這一點,並命名了函數print,然後將它編譯成某種類型的lib文件.so/.lib/.a那麼我會在那個庫中引用那個函數呢? 我只

    1熱度

    1回答

    我看到使用兩種語法在程序集「defined」中定義了「變量」,第一個看起來像一個標籤,第二個看起來像變量名。兩者可以互換使用,還是每個人使用都有特定的原因? 例如: msg db "Hello World",0x0a 看起來有點像在C/C++變量名,而 msg: db "Hello World",0x0a 看起來有點像在任一ASM或C/C++的標籤。 是否有使用一種或另一種語法的原因? 他

    5熱度

    1回答

    我正在跟蹤一些x86代碼的任務,我想知道「cmpl」究竟做了什麼以及如何預測「jne」是否會被滿足。 80484bf: 83 7d f0 07 cmpl $0x7,-0x10(%ebp) 80484c3: 75 16 jne 80484db 此外,這使用英特爾語法。 謝謝。

    0熱度

    1回答

    我試圖將我的片段轉換爲使用類似於gcc的內聯asm語法的編譯器。我閱讀文檔,一切都很好,直到我碰到這條線: mov eax, dword ptr fs:[0x20] 我轉換,爲: movl 0x20(%fs:), %eax 編譯翻轉,告訴我,fs是一個32位寄存器,該操作是無效的。我應該如何在& t語法中訪問fs?

    3熱度

    2回答

    我目前在學習彙編語言ARM; 爲此,我試圖將一些x86 code (AT&T Syntax)轉換爲ARM程序集(Intel Syntax)的代碼。 __asm__("movl $0x0804c000, %eax;"); __asm__("mov R0,#0x0804c000"); 從這個document,我瞭解到,在86堆結構的塊從1開始0x0804c000。但我當我嘗試做相同的arm,