assembly

    1熱度

    1回答

    是否可以使用索引尋址模式語法計算地址並將其存儲到寄存器中?像下面(錯誤)的表達(在AT & T彙編語法): movl $dataarray(,%edi,8), %eax 我知道變址尋址模式,可以用於移動數據: movl dataarray(,%edi,8), %eax 然而,在這種情況下,我想要做的是將dataarray元素的地址存儲在%eax寄存器中,其索引爲%edi。

    -6熱度

    1回答

    我想有些事情decompilacion和我有這樣的: What i have 能告訴我,如果它是一種編程語言或者是什麼呢? 我做了一些研究,我天衣是彙編但即時沒有舒爾

    0熱度

    2回答

    我學習什麼使一個計算機computer 到目前爲止,我知道我們有 高級語言 - > - >編譯成低級語言(assembly language) - > - >哪些彙編然後使用直接將指令發送到使用Machine Code 的指示CPU離子必須遵守相應的CPU架構以及該CPU使用的ISA(指令集架構)。 並且CPU通過各種通道從註冊表或從hdd(或從sdd等)讀取/寫入數據。 是我到目前爲止所讀文章沒

    1熱度

    2回答

    介紹 我通過這本書 「學習Linux二進制分析」 以下。我有一些使用32位程序集和C的經驗(但仍然認爲自己是新手)。然而,我有麻煩和混淆如何編譯一個C程序,其中包含32位程序集到一個對象文件.o。所以即時猜測這只是我的一個編譯問題。 源代碼用於基於代碼注入的二進制修補的一個示例的一部分。 源代碼 #include <sys/syscall.h> int _write (int fd, void

    0熱度

    1回答

    我有一個簡單的問題。不知道從哪裏開始。我需要一個簡單的數學計算(+,_,*,/)來輸出至少2位數字。 實施例:1 + 2 = 03 move #1,D0 move #2,D1 add.l D0,D1 上述需求,以輸出03 ...它輸出3. 我得顯示0,但正常的加載指令不會這樣做。人們甚至如何接近這一點?我迷路了。 ?? TY。

    0熱度

    2回答

    INCLUDE Irvine32.inc .data array DWORD 10,20,30,40,50 sum DWORD 0 .code main PROC mov EDI,offset array mov ECX,5 mov EAX,0 HERE: add eax,[edi] add edi,TYPE array dec ecx jnz HERE mov

    0熱度

    1回答

    我使用gcc -save-temps生成程序集,我添加了-fverbose-asm但該選項不會生成我想要的;這是一些奇怪的debug-ish註釋。 要獲取程序集+內聯源代碼,我正在執行gcc -g後跟objdump -S。 由於-save-temps無論如何都會生成程序集,有沒有辦法將其配置爲輸出objdump -S生成的內聯源?

    0熱度

    1回答

    package main import ( "fmt" "os" ) func main() { var l = test(4) test(5) fmt.Fprintf(os.Stdout, "%d\n", *l) } func test(v int) *int { var p = v return &p }

    1熱度

    1回答

    我試圖同時處理MSVC和GCC編譯器,同時更新這個代碼庫對GCC工作。但我不確定GCC內聯ASM的工作原理。現在我不擅長將ASM轉換爲C,否則我只會使用C而不是ASM。 SLONG Div16(signed long a, signed long b) { signed long v; #ifdef __GNUC__ // GCC doesnt work. __asm() { #

    0熱度

    1回答

    以下是彙編語言,用於乘以兩個16位數字。 LHLD 0002H ;DATA 1 SPHL LHLD 0004H ;DATA 2 XCHG LXI H,0000H LXI B,0000H NEXT: DAD SP JNC LOOP INX B LOOP: DCX D MOV A,E OR