Trong linux có bắt buộc điều này không?
Code:asm ( <<--- cái này phải bắt buộc cùng 1 dòng
Chạy thử đoạn code biên dưới :
-----------------inline.c-------------------------------------------------------
---------------------end of inline.c-------------------------------------------C Code:
#include <stdio.h> int main(void) { int x = 10, y; asm ("movl %1, %%eax;movl %%eax, %0;":"=&r"(y) :"r"(x):"%eax"); }
# gcc inline.c -o inline
# ./inline
Bạn sẽ thấy kết quả in ta là 10. Như vậy cái đoạn code nằm trong asm() đã copy giá trị của x vào y.
Cú pháp inline asm là:
asm ( "mã asm"cú pháp này bạn dễ hình dung hơn:
: xuất ra toán hang
: nhập vào toán hạng
: nhập vào toán hạng 2
);
asm ("foo %1, %2, %0": " =r" (output): "r" (input1): "r" (input2))
Bạn dùng dấu ; để viết nhiều hơn một instruction.
phần 1
Đã được chỉnh sửa lần cuối bởi spacetime : 23-10-2007 lúc 09:11 AM.
360 yahoospacetime blog
Tripod blog
cũng của spacetime trên wordpress
The god programmin language-C
My name is 7h36h5ng
password yahoo:mDn4kdn1z
Trong linux có bắt buộc điều này không?
Code:asm ( <<--- cái này phải bắt buộc cùng 1 dòng
Bạn chỉ viết trên một dòng thôi ,nếu muốn xuống dòng thì phải dùng dấu xuống dòng "\"
dấu này áp dụng cho toàn chương trình chứ không riêng mã asm
Đã được chỉnh sửa lần cuối bởi spacetime : 26-10-2007 lúc 04:59 PM.
360 yahoospacetime blog
Tripod blog
cũng của spacetime trên wordpress
The god programmin language-C
My name is 7h36h5ng
password yahoo:mDn4kdn1z