att

    3熱度

    1回答

    我正在試驗GCC的內聯彙編程序(我使用MinGW,我的操作系統是Win7)。 現在我只得到一些基本的C stdlib函數來工作。我一般不熟悉的Intel語法,但新AT & T. 下面的代碼工作不錯: char localmsg[] = "my local message"; asm("leal %0, %%eax" : "=m" (localmsg)); asm("push %eax");

    4熱度

    1回答

    所以我想寫一些x86來爲結構分配內存。我的C代碼看起來像這樣... struc *uno = malloc(sizeof(struc)); uno->first = 0; uno->second = 0; uno->third = 0; //And the struct struct struc { int first;

    -1熱度

    1回答

    我們給出的提示(使用AT &牛逼ASM) eax = A ebx = B ecx = &X edx = &Y 據我所知,(%EAX)將抓取的數據在一個內存位置,但你會做( %edx)抓住?說,例如在呼叫 movl (%edx), %ebx 另外 movl %eax, (%ecx) 是否第一呼叫只需更換與& Y(Y的存儲位置)和第二呼叫%EBX的當前值替換在所述存儲器

    -3熱度

    1回答

    C版本功能: float foo1 (float a, float b) { return sin(a) + b; } double sin(double x); double cos(double x); cos爲以後的功能。 任務是將foo1翻譯爲程序集,但正如您所看到的,a是float和sin需要double參數。現在已經有數週的時間將C語言轉換爲彙編代碼,但老實說,

    0熱度

    1回答

    我正在編寫一個簡單的sprintf()函數。當我嘗試除以$ 0xA時,我似乎無法找出爲什麼我的代碼得到一個算術豁免。如果我將所有內容都更改爲擴展版本(如%EAX),則不會發生這種情況。 .data divisor: .byte 0xA .text .globl sprinter sprinter: . . . add_unsigned_decimal_number: pu

    1熱度

    1回答

    我想知道,應該使用什麼值來更改FPU舍入模式。 .data nearest: ?? down: ?? up: ?? zero: ?? .text .global round pushl %ebp movl %esp, %ebp movl 8(%ebp), %ecx cmpl $1, %ecx je

    1熱度

    1回答

    我正在逐步完成AT & T彙編中的一個函數,並且無法弄清楚這個特定的jmp命令是如何工作的。 jmp *0x804a140(,%eax,4) 究竟是如何使用%eax寄存器和4跳轉指令?我從來沒有見過jmp以前用過這種方式。

    0熱度

    1回答

    我正在使用gdb在c中拆卸程序,並在& t程序集顯示以下內容。 sub (%eax),%edx mov %edx,(%eax) add $0x4,%eax 我不確定減法在這裏是如何工作的。按照我的理解,%edx中的值將從其中減去%eax的內存位置。 A.k.a%edx =%edx - (%eax)。在這之後打印寄存器值時得到的值很奇怪,我不確定它到底在做什麼。任何正確的方向點將不勝感激。

    0熱度

    3回答

    我正在讀上裝配本教程:http://orangejuiceliberationfront.com/intel-assembler-on-mac-os-x/,我碰到這個基本的彙編代碼來: .text .globl _main _main: pushl %ebp movl %esp, %ebp subl $8, %esp movl $0, %eax

    -1熱度

    1回答

    我試圖將以下代碼轉換爲使用leal的單行代碼。 movl 4(%esp), %eax sall $2, %eax addl 8(%esp), %eax addl $4, %eax 我的問題是3個部分組成: 是否在寄存器前面的「%」簡單地定義如下字符串作爲註冊? 整數前面的'$'是否將下列值類型定義爲int? 是leal 4(%rsi, 4, %rdi), %eax上述程序集的正確轉換?