小编Dar*_*hah的帖子

编译器与汇编器

汇编器将汇编代码作为输入并生成机器代码作为输出。那么是否意味着汇编程序还必须对代码进行词法分析和语法分析呢?

例如,需要某种方式来区分作为指令的 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”?

compiler-construction optimization assembly

2
推荐指数
1
解决办法
1361
查看次数

C++这个指针,在函数调用中隐藏参数

我有一个包含成员的堆栈类和一个名为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替换

c++ this

0
推荐指数
1
解决办法
3961
查看次数