gas

    1熱度

    2回答

    我正在嘗試編寫一個簡單的程序,可以在不使用Linux系統調用或標準C庫函數之一的情況下打印出C字符串。這只是爲了學習的目的,我絕不會在生產中這樣做(除非我真的很擅長)=)。 首先我的系統信息: [[email protected] sandbox-print_chars]$ uname -a Linux fedora.laptop 2.6.35.14-106.fc14.i686.PAE #1 S

    1熱度

    2回答

    我很努力地找到一種方法來檢索GAS中第一個命令行參數的第一個字符。爲了澄清我的意思是我如何做到這一點在NASM: main: pop ebx pop ebx pop ebx ; get first argument string address into EBX register cmp byte [ebx], 45 ; compare the firs

    3熱度

    2回答

    目前,我正在學習GNU as,並在「info as」中找到很多有用的信息。我發現「.set noat」用於MIPS指定代碼,但是當在「info as」中搜索此指令時,我在節點「alpha指令」中找到它的解釋,但在「MIPS Dependent Features」中找不到它。爲什麼?我錯過了手冊中的內容嗎? TIA

    5熱度

    1回答

    這是來自內核代碼中header.S文件的代碼片段。我無法理解lretw指令的功能。我已經檢查過這麼多在線資源的說明。 # We will have entered with %cs = %ds+0x20, normalize %cs so # it is on par with the other segments. pushw %ds pushw $6f l

    0熱度

    1回答

    我是新來的ASM和使用的字符串。 1 /我有一個字符串,我想回到第一卡拉科特的ADRESS。 (我稱之爲C main中的asm函數)。 我已經試過: movl $str, %eax 據對我來說,它返回的字符串。 與movl $(str), %eax它返回字符串的第一個caracter的地址? 如果我想返回字符串中第二個字符的地址,我不明白我如何在asm中做到這一點。 我diplay結果在C程序

    39熱度

    2回答

    的說明我想要解釋一下GCC生成的彙編中使用的.cfi_def_cfa_offset指令的值。我隱約知道.cfi指令涉及到調用幀和堆棧展開,但我想要更詳細地解釋爲什麼,例如,在GCC輸出的程序集中使用值16和8編譯以下C程序在我的64位Ubuntu機器上。 C程序: #include <stdio.h> int main(int argc, char** argv) { print

    0熱度

    2回答

    我有一個關於asm(x86/GAS)程序的問題,它返回一個分段錯誤。 這是一個關於Fibonacci:我認爲algorith是確定:(僞代碼) fibo(int number){ if (n < 2) return number; return fib(n - 1) + fib(n - 2); 我不明白爲什麼會出現錯誤。 C程序調用asm函數。 下面是代碼: f

    0熱度

    1回答

    我有一些簡單的靜態數組定義在c文件(const int data_input [1024];)和I需要從我的彙編代碼訪問它。什麼是正確的做法? 到目前爲止,我一直在做這樣說: .global data_input data_input_ptr: .word data_input my_function: adr r1, data_input_ptr bx

    2熱度

    2回答

    我試圖在x86_64平臺上用「gcc -S」 - >「as」 - >「ld」編譯一個簡化的C源文件。 該過程完成時沒有錯誤,但在執行時顯示「沒有這樣的文件或目錄」錯誤消息。 ctest.c int main() { return 0; } > gcc -S ctest.c > as -o ctest.o ctest.s > ld -o ctest /usr/lib64/cr

    6熱度

    1回答

    我想寫氣體宏生成包含根據所述參數n的各種MOVDQU指令xmm寄存器中的代碼。 .macro xxmov n, p1 .if (\n == 1) xor %eax, %eax .endif .if (\n - 1) xxmov (\n - 1), \p1 .endif movdqu ((\n - 1)