首页
社区
课程
招聘
请教UNIX V6 PDP11汇编的问题
发表于: 2010-6-10 23:03 4940

请教UNIX V6 PDP11汇编的问题

2010-6-10 23:03
4940
请教各位一下:

UNIX v6 m40.s中的 bic $!7,r0
中的“!”是什么意思?

bitwise OR NOT ?
找了很多书,包括pdp-11 processor handbook 都没有解释这个。。。。
先谢谢了!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 246
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
!属于宏操作符,不是MCU指令,所以在MCU手册上查不到,在宏汇编书籍中一般都有介绍,和& % <> ;;为一类。
     !叫做文字字符操作符,格式为:“!character”,他强制汇编把character当作文字字符。
     !7相当于字符“7”,和c语言的'7'等效。
2010-6-11 16:25
0
雪    币: 780
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哇,50kx
2010-6-11 16:27
0
雪    币: 2743
活跃值: (1049)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
已经找到正确答案:是取反的意思,7的二进制位取反.(在此感谢CU的 system888net   !!! 谢谢你!!!CU不知怎么的,又登不上了……)
当然,也要感谢看雪的lsanwan ,感谢他的热心回答。作为报答,赠50Kx。
2010-6-11 21:51
0
雪    币: 246
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
  谢谢LZ增金。
  我上面说的是MASM的概念,而“bic $!7,r0”显然不是MASM的格式,当时给忽略了。
  
  LZ确定“bic $!7,r0”中的“!”为7的二进制位取反,那么这种规定出处何在? 
      
  TASM、NASM等也没有这种用法和含义。

  而《PDP-11 MACRO-11 Language Reference Manual.pdf》汇编语言手册中讲的很清楚,“!”也没有这种用法和含义。
  
  UNIX的老祖AT&T汇编语言中同样也没有这种用法和含义。

  GNU C语言中到有规定“!”为“NOT”,用于关系表达式,但它用于常数确实用安位取反的效果。gnu C预处理使用手册也有“!”的说明,难道这里的“bic $!7,r0”是gcc内联汇编的一部分,“!”由C预处理程序解释翻译,从而形成7的安位取反?

  望高人指教。
2010-6-12 10:33
0
雪    币: 2743
活跃值: (1049)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
!         a ! b is a or ( not b ); i.e., the or of the first operand and the one’s complement of the second;
most common use is as a unary.

这是摘自《UNIX Assembler Reference Manual》的一段话,翻译成中文就是:
a!b 是: a 或(非b)的意思;即a或(b的非);经常用为一元运算符。
即!7为取7的非。
(UNIX V6是用GNU AS作为汇编编译器)

这种用法在现在的GNU AS手册已经不再标示了,lsanwan的质疑是有道理的。
上传的附件:
2010-6-13 09:58
0
雪    币: 246
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
感谢LZ,学习了.
2010-6-13 14:56
0
游客
登录 | 注册 方可回帖
返回
//