记录自己使用的各种工具,包括但不限于软件工具。
switch语句的汇编实现
发表于
| 分类于
编译器
C语言中switch
语句的汇编实现。
Endian of CPU
发表于
| 分类于
编程
动态检查CPU是little endian还是big endian。
Git学习资料
发表于
| 分类于
git
Git学习资料推荐。
GCC内联汇编
发表于
| 分类于
编译器
GCC内联汇编(inline assembly)的基本语法如下:
1 | __asm__ __volatile___ ( |
__asm__
表示内联汇编,__volatile__
表示不要优化代码。
三个冒号后面每一个都可以有多个部分,每个部分用逗号隔开。
安装JamVM
发表于
| 分类于
jvm
信号(signals)
发表于
| 分类于
linux/unix
信号(signal)是*nix以及POSIX兼容系统中的一种进程间通讯的方法。signal大致可以做如下划分:
- Traditional Unix signal
- POSIX standard signal
- POSIX real time signal
每一个信号对应一个整数值,每个信号都定义了默认行为,即进程收到信号之后默认执行的动作,
这些以及signal编程所需的其他内容都定义在signal.h
中,可以通过kill -l
命令查看都有
哪些signal,其中SIGRTMIN
到SIGRTMAX
之间的signal用于实时信号(real time signal)。有
多种方式可以产生信号,当然进程也有多种方式来处理信号:
- 使用默认行为
- 忽略信号(ignore)
- 捕获信号(catch),即用户自定义signal handler
- 阻塞信号(block)
JamVM如何实现Stop-The-World
发表于
| 分类于
jvm
在垃圾回收时,JamVM使用signal实现stop-the-world。
基数排序(radix sort)
发表于
| 分类于
算法
基数排序(radix sor)的C语言实现。
非本地跳转(NonLocal Jump)
发表于
| 分类于
c/cpp
正常的调用-返回流程是这样的,假如A调用B,B调用C,
则C返回到B,B返回到A,但是非本地跳转则打破了这种规则,
它可以不按照调用流程一步步返回,而是可以返回到任意地址,
例如完全可以从C中直接返回到A中,而越过B。