关于c语媾和汇编语言之间的对应

关于c语言和汇编语言之间的对应
    我有.c源代码,有对应的汇编代码?怎么样才能知道汇编代码哪一行对应源代码的哪一行,我需要自己写程序来做?不需要其他的工具?求大神指导!!!
------解决方案--------------------
这个应该不能做到一对一, 编译器会把代码做优化.
如果想看源码与之对应的汇编.
比较好的方式是在IDE中查看反汇编代码.

比如VS中, 调试运行程序 , 在代码中下断点, 运行到断点处时, 按组合键: Alt+8

m_btnImg.SetCheck(BST_CHECKED);
002C56B4  push        1    
002C56B6  mov         ecx,dword ptr [this] 
002C56B9  add         ecx,56Ch 
002C56BF  call        WTL::CButtonT<ATL::CWindow>::SetCheck (2C7C40h) 
BOOL bOk = m_btnImg.SetWindowText(TEXT("ABCDEFG"));
002C56C4  push        3D10F4h 
002C56C9  mov         ecx,dword ptr [this] 
002C56CC  add         ecx,56Ch 
002C56D2  call        ATL::CWindow::SetWindowTextW (2D0FD0h) 
002C56D7  mov         dword ptr [bOk],eax 

------解决方案--------------------

眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
------解决方案--------------------
如果你是想从 C代码到汇编  那么你需要了解编译器, 相当于要写一个编译器才可能对上汇编代码.

如果想从汇编到C代码, 那么你就需要了解反汇编. 先翻译成C代码,再与C代码作某种对比.

不管是要做哪一种, 工作量都是非常的大, 估计一个人完不成.

我现在还没有发现一个工具能把汇编变成C代码得, IDA只能把汇编转换成"伪C代码"
------解决方案--------------------
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。