作者zzss2003 (brotherD)
看板C_and_CPP
标题[问题] 请问这行组语是哪个指令集?
时间Thu Sep 21 14:45:44 2017
网址:
https://blog.regehr.org/archives/28
问题:
https://imgur.com/a/lPFBB
想请问,4(%esp), %eax
$3, %eax这两行是哪个指令集的组语。
另外abstract machine是什麽意思?指的是还没经过编译器编译的high-level程式码吗?(因
为不同的编译器可以编译成好几种不一样的组合语言),所以只能用抽象的概念去形容这段
程式码的功能。
如我小弟的理解有错,欢迎大力的鞭>///<
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.248.26.157
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1505976346.A.871.html
1F:推 LPH66: AT&T 语法的 x86 组语 09/21 15:01
2F:推 johnjohnlin: x86? 09/21 15:01
3F:→ LPH66: 写回 Intel 语法是 mov eax, [esp+4]; add eax, 3 09/21 15:02
4F:→ LPH66: www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm 09/21 15:02
6F:推 LPH66: 抽象机器的概念是这样的: 我们规定一段程式码在抽象机器上 09/21 15:07
7F:→ LPH66: 的运作方式, 然後观察这样运作之後它所产生的结果 09/21 15:07
8F:→ LPH66: (这不只代表输出, 还包含部份附带效应) 09/21 15:08
9F:→ LPH66: 那实际上的编译器在编译时就需要对同样这段程式码 09/21 15:08
10F:→ LPH66: 产生能得到同样结果的机械码出来 09/21 15:09
11F:→ LPH66: 以你贴的图来说, 呼叫这个函数的结果是回传了 x+3 的值 09/21 15:10
12F:→ LPH66: 那编译器可以直接产生回传 x+3 的指令 (即是下面的组语) 09/21 15:10
13F:→ LPH66: 简单说就是: 结果对就好, 过程不论; 这就给最佳化提供空间 09/21 15:11
感恩,精辟
※ 编辑: zzss2003 (60.248.26.157), 09/21/2017 16:30:04
14F:推 VictorTom: 推:) 09/22 00:52