一个失误,编译器报错Error: invalid char '[' beginning operand 2 `[ %eax]'
2012-10-28 20:51
501 查看
因为一个疏忽导致找bug几小时,上网搜寻不得,现写于此,愿向我一样被这一小概率事件折磨的人早点解脱。。。
gprs.c: Assembler messages:
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %eax]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %eax]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %edi]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %ebx]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %edi]'
为一个嵌入式设备编程,编译器报错如上,源代码如下:
static inline void _outl(unsigned long addr, unsigned long dat) {
asm volatile (
"str %1, [ %0 ]\n"
:
: "r" (addr), "r" (dat)
: "memory"
);
}
百思不得其解,后发现原因:
Makefile中前段时间在电脑上调试程序把Makefile加了一行:
CC=arm-none-linux-gnueabi-gcc
CC :=gcc <--------------此行为新加行,意思是把CC变量重新赋值'gcc',也就是改交叉编译为直接编译
注释掉那行后编译通过。
原因:
这是一个C语言嵌入汇编的实例,汇编代码是目标arm核心处理器的汇编,当然必须要用对应的交叉编译器喽。
gprs.c: Assembler messages:
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %eax]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %eax]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %edi]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %ebx]'
gprs.c:329: Error: invalid char '[' beginning operand 2 `[ %edi]'
为一个嵌入式设备编程,编译器报错如上,源代码如下:
static inline void _outl(unsigned long addr, unsigned long dat) {
asm volatile (
"str %1, [ %0 ]\n"
:
: "r" (addr), "r" (dat)
: "memory"
);
}
百思不得其解,后发现原因:
Makefile中前段时间在电脑上调试程序把Makefile加了一行:
CC=arm-none-linux-gnueabi-gcc
CC :=gcc <--------------此行为新加行,意思是把CC变量重新赋值'gcc',也就是改交叉编译为直接编译
注释掉那行后编译通过。
原因:
这是一个C语言嵌入汇编的实例,汇编代码是目标arm核心处理器的汇编,当然必须要用对应的交叉编译器喽。
相关文章推荐
- 有关TypeError: invalid 'in' operand obj的错误
- js:有关TypeError: invalid 'in' operand obj的错误
- ERROR ITMS-9000: "Invalid Image Path - No image found at the path referenced under key 'CFBundleIcon
- C++:invalid conversion from 'unsigned char *' to 'const char *'
- 编译基于arm平台的内核,出现error: invalid option `abi=aapcs-linux'
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- Python脚本语法错误:SyntaxError:(unicode error) 'utf8' codec can't decode byte 0xc0 in position 0: invalids
- Android将“.c”后缀名改成“.cpp”时java调用native失败及“error: base operand of '->' has non-poin
- insmod: error inserting 'hello.ko': -1 Invalid module format
- // 写一个函数,实现将一个字符串中的'/t'替换成四个'*', '/t'个数不定。如char *p="ht/thdsf/t/ttt/tfds dfsw/t ew/t",替换后p="ht****hdsf********tt****fds dfsw****
- Error处理:Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?)
- invalid conversion from 'const char*' to 'char*'
- Microsoft Network Monitor 3:Error(1169): '/Networks' - Invalid parameter '*'
- 更新到android studio2.0后,运行时出现一个问题:Error running app: Instant Run requires 'Tools | Android | Enable AD
- 关于ExtJs4提交数据到jsp页面,返回正确的json显示例子。及error:You're trying to decode an invalid JSON String...解决方法
- Error occurred in deployment step 'Retract Solution': Invalid object name 'AllWebs'
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- error:cannot convert parameter 1 from 'unsigned char *' to 'char *'
- 使用ibatis时遇到Error parsing XPath '/sqlMapConfig/sqlMap'的一个低级错误
- repo init 报:ValueError: invalid literal for int() with base 10: '8 (Apple Git-58)'