高级语言与汇编的关系
前几日遇一面试题:
考官:汇编与高级语言的联系? 我答:不知道
考官提示:你认为他们有没有联系?答曰:有,要不怎么都把高级语言转成汇编.
考官继续:那是什么把它们翻译成汇编的? 答曰:编译器
考官忍俊不禁,哈哈大笑扬场而去.
此事至今郁闷,望高手指点,我何处答错啊
[解决办法]
我也不是十分清楚,是有很多c器是c代先成代,然后再使用器再成最的器代。比如gcc在是子。不似乎也有直接.c成器代的。
你的考官有有是哪一高言。
[解决办法]
其实你说的狠对,不过好像你自己心里没有底
看上去那位考官一点都不懂compiler, tool chain ...
[解决办法]
其实你说的基本正确
编译器一般将高级语言直接转换成机器码,也有一部分编译器将高级语言转换为汇编语言,再用汇编器将其转换成机器码,因汇编语言和机器码几乎是完全对应的,所以是否有中间这个过程并不很重要。而且根据不同的语言、编译器和环境还有各种不同的做法,比如有时要用连接器来构造应用程序,.NET的各种编译器都是把高级语言翻译成MS二进制语言,直到执行时才翻译成本地机器语言,java也是差不多的过程。
但是个人估计你是误解了考官的问题,一般这样问法可能是要你回答汇编语言和高级语言有什么区别,有什么相似,各自适合什么之类的。
所以个人猜测他可能要你回答诸如"汇编语言是机器相关的,而高级语言不是"、"理论上汇编语言可以将任何高级语言写的程序描述为本地环境的版本"、"汇编语言适合底层操作,高级语言可以构建复杂应用,一些项目需要二者配合"等等这样的话。顺带提醒,面试时不要急着回答问题,先问清考官的意图再答不迟。