我尝试执行内联汇编,将变量作为输入
void main(void)
{
char a[20] = "mov edx, 88";
asm("%[a]" : : [a]"r"(a));
}
但是:
gcc a.c -masm=intel
Error: no such instruction: `eax'
我该如何做到这一点?
答案 0 :(得分:0)
指令必须是字符串文字的形式(实际写入的字符串,char数组的名称是指针btw)。 除此之外你有一般的想法:)
#include <stdio.h>
int main(int argc, char ** argv){
char a[20] = "nice try:)";
char * dst;
asm("mov %[dst], %[src]\n\t"
: [dst]"=r" (dst) : [src]"r"(a));
printf("%s\n", dst);
return 0;
}