问题的提出:
unsigned char a=0xA5;
unsigned char b=~a>>4;
注意~优先级高于>>,按照逻辑b应该为0x05
而结果b=0xf5,有点不符合逻辑,反编译(VC6,32位)看了一下,发现编译器把上面的代码编译成
mov ecx, dword ptr[ebp-8] ;ecx = 0xcccccca5
and ecx, 0ffh ;ecx = 0x000000a5
not ecx ;ecx = 0xffffff5a
sar ecx, 4 ;ecx = 0xfffffff5(注意移位后用1补齐!!!)
mov byte ptr [ebp-10h], cl ;cl = 0xfff5
反思一下,为了完成b=~a>>4,编译器做了三个工作
(1)申请了一个32位的临时变量x,将a扩展后,存入x
(2)将x取反
(3)将x右移4位,并将移位后x的低8位送给b
在第一步中,存在一个是否按符号位扩展的问题,这里a为unsigned型,不需要扩展,所以x = 0x000000a5;
若a为(signed) char型,则按符号位扩展后,x =0xffffffa5,取反后x = 0x0000005a,最终b=0x05。
下面在看一下关于符号位扩展的反编译代码
unsigned char a1 = 0xA5;
int a2 = a1;
这里扩展不需要补1,应为a1是unsigned类型的,所以编译器将上面代码译为
mov byte ptr [ebp-4], 0A5h
mov eax, dword ptr [ebp-4]
and eax, 0FFh ;eax = 0x000000a5
mov dword ptr [ebp-18h], eax
对于下面的c代码,需要进行符号位扩展
char a1 = 0xA5;
int a2 = a1;
反编译后,可以看到一条movsx带符号扩展指令
mov byte ptr [ebp-4], 0A5h
movsx eax,byte ptr [ebp-4] ;eax = 0xffffffa5
mov dword ptr [ebp-18h],eax
分享到:
相关推荐
其次,活动旨在帮助孩子们识别并理解乐曲的ABA结构,这种结构通常由两个相似的部分(A段)和一个不同的部分(B段)组成,是许多传统音乐作品的常见形式。此外,活动还要求孩子们能准确地拍打乐曲的节奏,感知民族...
例如,如果a = 1,b = 2,那么h = a - b if a > b else a + b会计算为h = a + b,因此h的值为3。 最后,运算符的**优先级**是编程中的重要概念,决定了运算的顺序。优先级高的运算符会先执行,例如,乘法和除法的...
7. **建议与策略**:提出让A主任、B副总和柳秘书三人共同组成领导中心,这是一种策略性建议,反映了在复杂组织环境下解决问题的智慧。 8. **晋升与决策**:柳秘书最终被提拔为副总,显示了高层对秘书工作的认可,...
4. "僕はその時、なんだか父が涙ぐんでいるような( )。" 意思是“那一刻,我感觉到父亲好像在流泪。”选项C "気が付いた" 表示注意到或察觉到。 5. "引っ越しする時、アパートの主人にあいさつする時、「長い間...
4. 文言虚词用法:题目考察了虚词“以”、“之”、“且”、“而”的不同用法,如“以”作介词(A选项中表示目的关系,B选项中表示结果关系)、“之”作助词(宾语前置标志,B选项中“何厌之有”等于“有何厌”)、...
总的来说,这篇内容不仅介绍了珊瑚岛的自然地理特征,还寓含了一个深刻的生活哲理:不要小看任何微小的力量,它们可能蕴藏着巨大的潜力。这个故事对于准备中考的考生来说,除了提供语言学习的素材,还可以启发他们...
A项"槲叶落山路,枳花明驿墙"描述的是春天山路上的情景,B项"江流宛转绕芳甸,月照花林皆似霰"描绘的是春天江边的月夜美景,C项"叶上初阳干宿雨,水面清圆,一一风荷举"描绘的是夏日荷花,D项"候馆梅残,溪桥柳细,...
题意为"不要小看Bob,他在别人软弱的地方很强。" 8. 此题考查地点状语从句,where引导从句置于put it之后,表示"把盒子放在任何你能找到足够空间的地方",正确答案是D。 9. succeed后接地点状语从句,表示在其他...
JavaScript数组去重经常出现在前端招聘的笔试题里,比如:有数组vararr=['a','b','c','1',0,'c',1,'',1,0],请用JavaScript实现去重函数unqiue,使得unique(arr)返回['a','b','c','1',0,1,'']1.正确。别小看这个考点...
- 在课内阅读部分,第6题考查了"之"字的不同用法,A、C、D项是结构助词,B项是音节助词。 - 第8题的C选项有误,原文中河伯的感叹表明他认识到自己之前小看了孔子的学识。 6. **启示与感悟**: - 学习《秋水》的...
在IT行业中,快捷键的掌握是提升工作效率的关键因素之一。无论是程序员、设计师还是普通的电脑用户,...所以,不要小看了这些看似不起眼的快捷键,它们在日积月累中会让你的工作变得更为高效,让你在IT世界中与众不同。