att

    0熱度

    1回答

    我想寫使用內聯彙編用C離開操作的旋轉,像這樣: byte rotate_left(byte a) { __asm__("rol %0, $1": "=a" (a) : "a" (a)); return a; } (凡字節通過typedef unsigned char型)。 這就提出了一個錯誤 /tmp/ccKYcEHR.s:363: Error: operand size

    2熱度

    2回答

    我正在嘗試在程序集中製作一個小程序(對於AT & T)。我試圖以整型的形式從用戶那裏得到一個輸入,然後遞增,然後輸出遞增的值。但是,該值不會增加。我花了最後幾個小時嘗試所有我能想到的東西,但它仍然不起作用,所以我有這樣的想法,即我可能理解集會中的一個概念不好,導致我沒有發現錯誤。這是我的代碼: 1 hiString: .asciz "Hi\n" 2 formatstr: .asciz "

    0熱度

    1回答

    這是第一次我寫彙編代碼。 在第一個開始,我寫了 #include<stdio.h> int main(){ int x,y; asm("movl $2,%eax"); asm volatile( "movl $1,%0\n\t" "movl %0,%%ebx\n\t" "leal 2(%%ebx,%%eax,$2)

    2熱度

    1回答

    我無法找到答案。從我讀過的%ebp有32位,將%esp移動到%ebp,你仍然會有32位,然後減去70到32,我不明白其餘的。我對此很陌生,所以我不是很精通。請給出詳細的解釋。謝謝! 下面是我遇到的問題。 在這個指令序列的末尾,多少個字節將esp和程序堆棧上存儲的返回地址分開?假設我們使用標準的32位x86調用約定來調用這個函數。 804847c functioname: 804847c: pus

    0熱度

    2回答

    這是從我的腿上彈問題的彙編代碼,我陷在階段2; 炸彈實驗室要求我們根據彙編代碼找出正確的輸入,否則會爆炸。 從< +20>我知道%rbp -0x30(48)== 0或者它會調用< +32>並炸開炸彈;因此%rbp = 48(DEC) 之後(+26)%rbp - 0x2c(44)必須等於1或它會爆炸炸彈... 但是由於%rbp = 48,炸彈會爆炸到任何地方所以我現在迷惑...... 我想我誤解了並

    0熱度

    1回答

    我看到這種情況下,從一個網站: cmpl $0x0,-0x20(%ebp) jne xxx (program terminated so -0x20(%ebp) == 0) cmpl $0x1,-0x1c(%ebp) jne xxx (program terminated so -0x1c(%ebp) == $1) 則: lea -0x18(%ebp),%ebx mov -0x

    2熱度

    1回答

    我正在與AT & T語法,但認爲我會嘗試英特爾。我有這樣的代碼: .text .global _start _start: mov ebx, 0 mov eax, 1 int 80h 應該返回0,對不對?它在轉換之前做了AT & T. as out.s -msyntax=intel --32 -o out.o ,但我得到: 我使用組裝

    6熱度

    1回答

    我有一個工具生成的x86_64體系一些GNU彙編代碼,並有以下說明: movq %rsp, %rbp leaq str(%rip), %rdi callq puts movl $0, %eax 我無法找到關於「callq」指令實際的文件。 我看過http://support.amd.com/TechDocs/24594.pdf這是「AMD64體系結構程序員手冊第3卷:通用和系統指令」,但

    0熱度

    2回答

    所以,我有一個彙編函數,它在C中調用。它編譯並且沒有給出警告,但是當我嘗試運行它時,它給了我一個分段錯誤。我認爲這是因爲我不能將一個常量移動到一個寄存器中,但是使用mul/div命令它需要一個值在EAX寄存器中。 我如何在Assembly中乘兩個常量? 下面的代碼到目前爲止... .section .data .global n .equ A, 50 .equ B, 5 .section

    0熱度

    1回答

    我在寫一個內聯彙編代碼來讀取實時時鐘。我正在加載寄存器編號(4)以讀取到'dl'並將其加載到端口0x70。我正在嘗試將這個寄存器值(4)讀入al。欲瞭解更多信息 - RTC asm( "mov $4, %%dl;" "out 0x70, %%dl;" "in %%al, 0x71;" : : :"%al","%dl" ); 我正在上編譯包含該代碼的C文件下面的錯誤消息。 Assem