把“dereference”翻译成“提领”不如直译为“引用解析”

【正文】
  这 2 天在回顾《内核设计与实现(第3版)》这本书时又看到了“提领”这种说法,它出现在书上第 75 页。估计译者当时也不知道应该翻译成什么中文词汇比较好,所以在译文后加上了英文原文“dereference”。书上的原文是这样的:

节约两次提领(dereference)
  如果你碰巧已经得到了 next 和 prev 指针,你可以直接调用内部链表函数,从而省下一点时间(其实就是提领指针的时间)。前面讨论的所有函数其实没有做什么其他特别的操作,它仅仅是找到 next 和 prev 指针,再去调用内部函数而已。……但这只有在向前和向后指针确实已经被提领过的情况下才有意义。……

  说实话,当我第一次看到“提领”这个词时我完全不能理解,当时第一反应是:这好像是个古代官职,可这书是讲 Linux 内核的啊,那这到底是什么!?
  幸亏译者给出了“dereference”这个原文,按照构词法来看它实际上是由“de-”前缀和“reference”单词组成。“reference”我们在源码或文档里见得多了,是“引用、参考”的意思,“de-”前缀则有“去除、去掉、反向”之意。这类常见的构成词对有很多,比如:

compose - decompose(组合 - 分开)
construct - deconstruct(构建 - 拆毁)
emphasize - deemphasize(强调 - 忽略)

  再结合原文里“如果你碰巧已经得到了 next 和 prev 指针,你可以直接调用内部链表函数……这只有在向前和向后指针确实已经被提领过的情况下才…”这样的解释,所以这个所谓的“提领”其实就是“获取指针地址或引用地址上的值”的意思,按照构词法可直译为“引用解析”。
  维基百科上对“dereference”的解释也印证了我这种说法的正确性:

The dereference operator or indirection operator, denoted by “*” (i.e. an asterisk), is a unary operator (one operator) found in C-like languages that include pointer variables. It operates on a pointer variable, and returns an l-value equivalent to the value at the pointer address. This is called “dereferencing” the pointer.

  搞不懂书上为什么当时要翻译成“提领”这个怪模怪样的词,直接翻译成“引用解析”或类似的表达岂不是更容易让人理解?

### 将汇编语言代码转换为C语言代码的方法 将汇编语言代码转换为C语言代码是一个复杂的过程,涉及对底层硬件操作的理解以及高级编程语言抽象能力的应用。以下是具体方法: #### 1. 理解汇编代码的功能 在开始转换前,需仔细阅读并理解每条汇编指令的作用及其所实现的具体功能[^1]。 #### 2. 映射到相应的C语句 对于常见的算术运算、逻辑判断等基础操作可以直接映射至对应的C语言表达式;而对于特定寄存器的操作,则可以通过定义全局变量或局部静态变量来模拟这些寄存器的行为[^2]。 例如,假设有一段用于计算两个数之和并将结果保存回内存位置的简单汇编代码片段如下所示: ```assembly MOV AX, [NUM1] ; Load value from memory address NUM1 into register AX ADD AX, [NUM2] ; Add the content at memory location NUM2 to AX MOV [RESULT], AX ; Store sum back into RESULT variable's memory space ``` 这段汇编可以被转化为如下的C函数形式: ```c void add_numbers(int *num1_ptr, int *num2_ptr, int *result_ptr){ // Dereference pointers and perform addition operation. *result_ptr = (*num1_ptr) + (*num2_ptr); } ``` #### 3. 处理控制流结构 条件分支(if/else)、循环(for/do while)等控制流程可通过分析比较指令(JMP/JZ...)及跳转表等方式重构为易于理解和维护的C语言版本[^3]。 #### 4. 调试验证 完成初步转化之后还需要通过单元测试等多种手段确保新写的C程序能够正确重现原有汇编行为,并且保持良好的性能特性。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值