Gcc内联ASM,使用LEA将EBX设置为char数组地址

时间:2014-01-27 21:42:12

标签: gcc assembly inline-assembly

我试图将内联asm代码格式VS转换为GCC(AT& T)..原始代码是这样的:

char mystr[] = "Hello world";
_asm mov eax,0
_asm lea ebx, [mystr]

以下是我尝试使用& t语法在gcc中转换代码:

char mystr[] = "Hello world";
asm("mov $0,%%eax\n"
    "leal (%0),%%ebx\n"
    : : "r"(mystr));

这段代码似乎不起作用,任何想法为什么? 非常感谢你

1 个答案:

答案 0 :(得分:1)

此代码似乎有效:

char* mystr = "Hello world";

asm("mov $0,%%eax\n"
    "leal (%0),%%ebx"
    ::"b"(mystr));

我已将char mystr []更改为char * mystr,将“r”更改为“b”.. 如果有人知道“b”究竟是什么,请告诉我...... 非常感谢