gas

    1熱度

    1回答

    所以基本上我試圖重新使用一些在Linux 32位上使用objdump從ELF binary反彙編的一些asm代碼。 在反彙編代碼,我看到: repnz scas 和(使用gcc)當我試圖重新編譯它,我得到這個錯誤: Error: no instruction mnemonic suffix given and no register operands 我認爲這是一個法律指令,我只是不知道這

    1熱度

    2回答

    氣體拒絕我所有的pushl與 「錯誤指令前綴」 。我想不通爲什麼...(樣品虛設碼) .section .text .global _start _start: movl $10, %eax pushl %eax movl $1, %eax int $exit .data .equ exit, 0x80 我還不能直接在腳本做 i

    -1熱度

    1回答

    我是Linux的新手,用於彙編程序設計(GAS)和英語。所以,如果我寫錯了,抱歉。我希望谷歌翻譯能夠幫到我,寫得不錯。 我想知道如何將一組數字(存儲在.data中)寫入文本文件中,而無需調用任何庫中的函數(如printf()),並且只通過彙編程序進行操作。我不想要現成的解決方案。我想知道我的寫入調用後Linux內核的功能。怎麼運行的?它是如何設計的? 我試圖將數字列表打印到STDOUT中,但我在終

    0熱度

    1回答

    我使用gcc從多個c文件生成裝配文件。當我嘗試使用gas來組裝生成的程序集文件時,它會發現這個錯誤,因爲它找到了在多個文件中定義的符號。 Error: symbol '.L???' is already defined 望着文檔,.L前綴的文件應該是局部符號的名稱,以便當它發現在不同的文件相同的符號名稱爲什麼氣不抱怨呢?

    4熱度

    1回答

    我們的課程練習要求我們在GNU彙編中創建delta = b2-4ac函數,並從C中訪問它。由於這是一門關於編譯器的課程,而不是彙編,所以教授選擇只展示整數功能,並期望一個整數函數。 但是,我希望個人學習稍微超出責任範圍,創建一個返回浮點而不是整數的可用函數。 我想出了這個C(dont't介意全局,下一個練習的目的是有參數的適當功能): # include <stdio.h> extern fl

    4熱度

    1回答

    在爲Microsoft的x64彙編程序編寫的簡單程序中,我想要在SSE寄存器(如xmm0)和通用寄存器(如rcx)之間移動一個64位值,如<中的MASM >中的Intel語法: mov xmm0, rcx ... mov rcx, xmm0 這兩行產生下面的錯誤信息,分別從ml64.exe: 錯誤A2152:協處理器寄存器不能是第一操作數 錯誤A2070:無效指令操作數 但是,很明顯可以在

    0熱度

    1回答

    我正在通過Jack Crenshaw的「Let's Build A Compiler」。我正在將他的Motorola 680x0指令翻譯成x86 GAS語法。 在變量賦值期間,所需的語義是通過使用PC相對尋址(至少這就是Crenshaw所要做的)創建一個變量的引用。該變量可以在由摩托羅拉語法來訪問: MOVE X(PC),D0 其中x是變量名。 下面是實際的過程是什麼樣的分配(以帕斯卡): pro

    1熱度

    2回答

    我一直在關於編寫程序集的幾個例子,他們使用一個臨時寄存器來傳遞一個段值寄存器的立即值。爲什麼需要在將立即數放入段寄存器之前將其寄存在某個寄存器中? 例子: movw $0x7c00, %ax movw %ax, %ds ... ... movw $0x6000, %ax movw %ax, %ss 爲什麼不而不是直接置於段立即註冊? movw $0x7c00, %ds ... m

    -1熱度

    2回答

    我有分配一些存儲器到將要與自然數被填充到一定N. 比方說陣列的C函數, N = 10; array = calloc(N, sizeof(int)); 然後我調用我寫的彙編函數,但是我似乎無法訪問數組字段。我設法找到位於8(%ebp)的N的值,並且我已經檢查了GDB,它確實等於C代碼中的N集合。 但是,當我嘗試訪問數組中的第一個元素並將其移動到例如%esi時,該值不是它應該是的。 那我用下面

    0熱度

    1回答

    我想寫一些代碼來啓動一個模擬(在OVPsim)Microblaze處理器。 我建立了一個真正裸機的平臺 - 即沒有半主機庫。但是我不熟悉編寫.s文件,而不是一些內聯彙編的小部分。 __HEAD : 所以,我希望指定我的彙編.text段位於物理地址00000000 在Linux內核中的head.S文件,引導代碼是由兩個宏之前 和 ENTRY(_start) 從我可以通過grepping來源既