摘要:
上次的“c调用汇编”使用的clang编译器,而且使用的是mac 64位系统。当时感觉写的汇编怪怪的,今天闲来无事,就在w7 32位系统下把c文件汇编后,确实与mac后的差异很大。可不仅仅是寄存器eax与rax的区别。我想说的是函数参数传递的不同。mac下clang编译后函数的参数先保存在寄存器中(以一定的规则保存),然后在函数中压入栈里,以待后用。例如上篇例子,红色部分:.global _decToBin _decToBin: pushq %rbp movq %rsp,%rbp movq %rdi,-8(%rbp) #第一个参数,保存在r... 阅读全文