汇编器将汇编代码作为输入并生成机器代码作为输出。那么是否意味着汇编程序还必须对代码进行词法分析和语法分析呢?
例如,需要某种方式来区分作为指令的 MOV 和作为标签的 MOVXYZ。
以下面这段与8086兼容的代码为例。
MOV MOVXYZ,013h
MOV BX,023h
ADD BX,MOVXYZ
Run Code Online (Sandbox Code Playgroud)
如果它确实需要另一轮词法分析和语法分析,那么为什么要把汇编作为编译的中间步骤呢?
编辑:
汇编器获取汇编代码作为输入
MOV AX,MOVXYZ
ADD AX,BX
Run Code Online (Sandbox Code Playgroud)
它本质上是一个带有字符的文件。我的问题是,如果不是词法分析,它如何区分“MOV”和“MOVS”?
我有一个包含成员的堆栈类和一个名为push的函数.
class STACK
{
int data;
public:
void push(int x)
{
data=x;
}
}
Run Code Online (Sandbox Code Playgroud)
C++如何转换此语句:
s1.push(3);
Run Code Online (Sandbox Code Playgroud)
至
s1.push(this,3);
Run Code Online (Sandbox Code Playgroud)
基本上我的问题是在引擎盖下发生什么来生成this指针并将其作为隐藏参数传递?
我实际上在C编码.我的目标是有一个尽可能接近OOP的程序.为此我有函数指针作为结构的成员.因此,我想知道是否有可能以某种方式跟踪称为函数的结构(如"this"指针).我不想做类似的事情:s1.push(&s1,3); 因为它打败了我的目的.
是否可以转换s1.push(3); 到s1.push(&1,3); 通过MACRO替换