Home avatar

时光似海

写给小白的比特币入门

为了给小白说清:

私钥 公钥 地址 钱包 交易所 咋获得比特币

简单粗暴,不讲原理不讲原理不讲原理

说了不讲原理,就当这是定理

私钥公钥地址

按箭头方向,知道前面的,就能计算出后面的,反过来不行

板子

cpp

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <float.h>
#include <math.h>
#include <string.h>
#define EPS FLT_EPSILON
#define ios_no_sync do{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);}while(0)
//#define DEBUG
#ifdef DEBUG
    #define DBG(x) do{cout <<__FUNCTION__<< ":" << __LINE__ << ": " << #x << " = " << (x) << endl;}while(0)
#else
    #define DBG(x) do{}while(0)
#endif
#define mset(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
typedef long double ld;
template<typename T>
T GCD(T a, T b) {
    return b==0?a:GCD(b,a%b);
}
const int INF = 0x3f3f3f3f;
const double PI=acos(-1.0);

int main() {
    ios_no_sync;
    DBG(INF);
    cout << "ac" << endl;
    return 0;
}

Compiler5_代码生成

中端和后端:

最简单的结构:

简单的结构在早期非常流行,现代编译器很少用,而是分成多个阶段向目标代码靠近。

代码生成的任务:

Compiler4_语义分析or类型检查

编译器前端:

语义分析的任务就是输出图中的中间表示。早期编译器语义分析往往直接生成目标代码,现代编译器需要对代码做优化或其他分析,所以生成中间表示(中间代码)。

Compiler3_语法制导翻译&AST

解析输入的字符串时,在特定位置执行指定的动作。

基本思想

分析树:

  • 编码了句子的推导过程
  • 但是包含很多不必要的信息,节点占用存储空间
  • 需要知道那些信息是重要的
    • 对于表达式而言,只需要知道运算符和运算数
      • 优先级,结合性等已经在语法分析部分处理掉了
    • 对于语句,函数等其他构造而言也一样
      • 比如,编译器不关心赋值符号是=还是:=

具体语法和抽象语法