cpuid.o:在函数`_start':(。text + 0x20)中:未定义引用`ouput'

时间:2014-09-12 05:46:28

标签: assembly

    .section .data
output: .ascii "The processor vendor ID is 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n"
.section .text
.global _start
_start:
   movl $0, %eax
   cpuid
   movl $output, %edi
   movl %ebx, 28(%edi)
   movl %edx, 32(%edi)
   movl %ecx, 36(%edi)
   movl $4, %eax
   movl $1, %ebx
   movl $ouput, %ecx
   movl $42, %edx
   int $0X80
   movl $1, %eax
   movl $0, %ebx
   int $0X80

为什么我会收到错误?为什么它不能在数据部分看到我的输出变量?

1 个答案:

答案 0 :(得分:1)

可以在数据部分查看您的output变量。 无法看到的内容是ouput变量,您尚未对其进行定义。

变量ouput output相同。如果我们拥有可以自动关联两者的超智能机器(因为我们令人印象深刻的内置模式匹配大脑可以),那将是很好但是,现在还不是这样。

该行应改为:

movl $ouput, %ecx

为:

movl $output, %ecx
;       ^