小编kop*_*ich的帖子

在x86_64 linux上的C程序中内联汇编

我在linux x86_64上构建了一个用C和内联汇编编写的简短程序.它应该写一个字符串给stdout.我在互联网上的一篇文章中找到了它:

int write_call( int fd, const char * str, int len ){
    long __res;
    __asm__ volatile ( "int $0x80":
        "=a" (__res):"0"(__NR_write),"b"((long)(fd)),"c"((long)(str)),"d"((long)(len)) );
    return (int) __res;
}

void do_write( void ){
    char * str = "Paragon output string.\n";
    int len = strlen( str ), n;
    printf( "string for write length = %d\n", len );
    n = write_call( 1, str, len );
    printf( "write return : %d\n", n );
}

int main( int argc, char * argv[] ){
    do_write();
    return EXIT_SUCCESS; …
Run Code Online (Sandbox Code Playgroud)

c linux x86-64 inline-assembly

1
推荐指数
1
解决办法
1683
查看次数

标签 统计

c ×1

inline-assembly ×1

linux ×1

x86-64 ×1