Esper 发布的文章

现今绝大多数计算机都是用的是64位系统了,于是默认生成的代码的target也是64位的。 可是。。模拟器只支持32位的指令集,于是只能想办法生成32位的代码。

MIPS:

mips-img-elf-gcc -march=mips32 -mno-local-sdata ...

https://reviews.llvm.org/D4903?id=12672#inline-47153 这里提到了%gp_rel的功能,但是并看不懂 通过-mno-local-sdata使得编译时不生成该标识符。(还是模拟器不支持)

RISC-V: 需要通过编译的时候指定目标架构。 方法之一是只生成32位的编译器:

./configure --prefix=/path/to/installation --with-arch=rv32gc --with-abi=ilp32

似乎还可以通过--enable-multilib的方法在编译程序时指定。(未研究)

补充一个操作:

gcc -E -march=help -xc /dev/null

https://stackoverflow.com/questions/47299458/how-can-i-determine-what-architectures-gcc-supports 使用该命令,版本较新的gcc会把支持的架构作为报错信息输出来。 原作者说的最低版本是gcc7,但是我的gcc6.4也能用

ALTER TABLE foo NOCHECK CONSTRAINT ALL  --禁用所有外键
ALTER TABLE foo WITH CHECK CHECK CONSTRAINT ALL  --启用所有外键

主键约束不存在禁用的,所以不用担心影响到主键约束。 启用外键的条件是数据库中的数据不违背外键规则,即该方法不能用于像MySQL那样初始化导入不完整的数据。 经测试在SSLDB 2012可用。

参考: https://stackoverflow.com/questions/737115/turn-off-constraints-temporarily-ms-sql

码元 -> baud(波特) 比特 -> bit 其中码元可以理解为信息传递时的最小变化单元 比特则是有特定高层含义的数据信息 曼彻斯特编码使用码元中部的跳变作为0-1的二进制编码。而当连续传输0或1时,显然无法保持每次只在比特中心按同一个方向跳变。->通过在比特边缘反向跳变来解决这一问题。 而这使得曼码编码的最大速率变为了原来的两倍,即每传送半个比特就要跳变一次。

看看stackoverflow上的讨论:https://stackoverflow.com/questions/25834577/why-in-manchester-encoding-the-bit-rate-is-half-of-the-baud-rate

The Wikipedia article for Baud says that it can be defined as pulses per second. In the case of Manchester Encoding, this results in the baud rate being defined as "clock transitions". “维基百科上介绍波特的页面说,波特的定义可以是每秒钟的脉冲次数。就曼码编码来说,其可以被解释为时钟的跳变频率。”

我们课上老师给出的定义:“码元是时间轴上的一个信号编码单元”。也就是说,不是 信息 编码单元,只要是有规律的信号跳变都算是进行了新的信号传输。也就是说,使用曼码在物理层上的码元速率是其在数据链路层上数据传输速率的2倍

Windows 10默认把硬件时间当成当前时间,时区就成了摆设。 而*nix显示时间的方式是硬件存储的UTC时间+当前设置的时区。 因而如果在两个系统中都开启自动同步时间的话,就会经常出现错乱。 解决方法是在Windows 10中使用硬件的UTC时间存储方式。

修改注册表:

HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

在该项下新建一个DWORD值RealTimeIsUniversal,取值设置为1。 重启即可。