当前位置:首页 » 编程软件 » acc编译

acc编译

发布时间: 2022-04-12 20:08:55

❶ 单片机 汇编指令 ACC

cpl
bit
它的功能:直接寻址位取反
,cpl

编译模式控制位,它表示在相对直接寻址时采用哪种指针。当cpl=0时,使用页
指针dp;当cpl=1时,使用堆栈指针sp

❷ 编译原理问题,高手进。

回答下列问题:(30分)
(6分)对于下面程序段
program test (input, output)
var i, j: integer;
procere CAL(x, y: integer);
begin
y:=y*y; x:=x-y; y:=y-x
end;
begin
i:=2; j:=3; CAL(i, j)
writeln(j)
end.
若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。
答: (1) 3 (2) 16 (3) 16 (每个值2分)

(6分)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文法是否是LL(1)的,请说明理由。
G(M):
M → TB
T → Ba |
B → Db | eT |
D → d |

解答:
计算文法的FIRST和FOLLOW集合:(4分)
FIRST(M) = { a,b,e,d, } FIRST(T) = { a,b,e,d, }
FIRST(B) = {b,e,d, } FIRST(D) = {d,}
FOLLOW (M) = {#} FOLLOW (T) = { a,b,e,d,#}
FOLLOW (B) = {a,# } FOLLOW (D) = { b}

检查文法的所有产生式,我们可以得到:
1. 该文法不含左递归,
2. 该文法中每一个非终结符M,T,B,D的各个产生式的候选首符集两两不相交。
3. 该文法的非终结符T、B和D,它们都有候选式,而且
FIRST(T)∩FOLLOW(T)={ a,b,e,d }≠
所以该文法不是LL(1)文法。(2分)

(4分)考虑下面的属性文法
产 生 式 语 义 规 则
S→ABC

A→a
B→b
C→c B.u := S.u
A.u := B.v + C.v
S.v := A.v
A.v :=3*A.u
B.v := B.u
C.v := 1
画出字符串abc的语法树;
对于该语法树,假设S.u的初始值为5,属性计算完成后,S.v的值为多少。
答:(1) (2分)

(2) S.v的值为18 (2分)

(4分)运行时的DISPLAY表的内容是什么?它的作用是什么?
答:DISPLAY表是嵌套层次显示表。每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。通过DISPLAY表可以访问其外层过程的变量。

(5分)对下列四元式序列生成目标代码:
A:=B*C
D:=E+A
G:=B+C
H:=G*D
其中,H在基本块出口之后是活跃变量, R0和R1是可用寄存器。
答: 目标代码序列
LD R0 B
MUL R0 C
LD R1 E
ADD R1 R0
LD R0 B
ADD R0 C
MUL R0 R1
ST R0 H

(5分)写出表达式a+b*(c-d)对应的逆波兰式、三元式序列和抽象语法树。
答:
逆波兰式:(abcd-*+) (1分)
三元式序列: (2分)
OP ARG1 ARG2
(1) - c d
(2) * b (1)
(3) + a (2)
抽象语法树:(2分)

(8分)构造一个DFA,它接受={a,b}上所有包含ab的字符串。
答:
(2分)构造相应的正规式:(a|b)*ab(a|b)*

(3分)
a a

a b
b b

(3分)确定化:
I
{0,1,2} {1,2,3} {1,2}
{1,2,3} {1,2,3} {1,2,4,5,6}
{1,2} {1,2,3} {1,2}
{1,2,4,5,6} {1,2,3,5,6} {1,2,5,6}
{1,2,3,5,6} {1,2,3,5,6} {1,2,4,5,6}
{1,2,5,6} {1,2,3,5,6} {1,2,5,6}
b b
b a
a a a a

a b b
b

最小化:
{0,1,2} {3,4,5}
{0, 2},1, {3,4,5}

(6分)写一个文法使其语言为L(G)={anbncm| m,n≥1,n为奇数,m为偶数}。
答:
文法G(S):

(8分)对于文法G(S):

1. 写出句型b(Ma)b的最右推导并画出语法树。
2. 写出上述句型的短语,直接短语和句柄。
答:
1. (4分)

2. (4分)
短语: Ma), (Ma), b(Ma)b
直接短语: Ma)
句柄: Ma)

(12分)对文法G(S):
S → a | ^ | (T)
T → T,S | S
(1) 构造各非终结符的FIRSTVT和LASTVT集合;
(2) 构造算符优先表;
(3) 是算符优先文法吗?
(4) 构造优先函数。
答:
(1) (4分)

(2) (4分)
a ^ ( ) ,
a > >
^ > >
( < < < = <
) > >
, < < < > >

(3) 是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。 (1分)

(4) 优先函数(3分)
a ^ ( ) ,
F 4 4 2 4 4
G 5 5 5 2 3

(8分)设某语言的do-while语句的语法形式为
S do S(1) While E
其语义解释为:

针对自下而上的语法分析器,按如下要求构造该语句的翻译模式,将该语句翻译成四元式:
(1) 写出适合语法制导翻译的产生式;
(2) 写出每个产生式对应的语义动作。
答:(1). 适合语法制导翻译的文法(4分)
G(S):
R do
UR S(1) While
SU E
(2). (4分)
R do
{ R.QUAD:=NXQ }

UR S(1) While
{ U.QUAD:=R.QUAD;
BACKPATCH(S.CHAIN, NXQ) }

SU E
{ BACKPATCH(E.TC, U.QUAD);
S.CHAIN:=E.FC }

答案二:
(1) S do M1 S(1) While M2 E
M ε (4分)
(2) M ε { M.QUAD := NXQ } (4分)
S do M1 S(1) While M2 E
{
BACKPATCH(S(1).CHAIN, M2.QUAD);
BACKPATCH(E.TC, M1.QUAD);
S.CHAIN:=E. FC
}

(10分)将语句
while C>0 do if A B=0 then C:=C+D else C:=C*D
翻译成四元式。
答:
100 (j>, C, 0, 102)
101 (j, -, -, 112)
102 (jnz, A, -, 106)
103 (j, -, -, 104)
104 (j=, B, 0, 106)
105 (j, -, -, 109)
106 (+, C, D, T1)
107 (:=, T1, -, C)
108 (j, -, -, 100)
109 (*, C, D, T2)
110 (:=, T2, -, C)
111 (j, -, -, 100)
112

(10分)设有基本块如下:
T1:=3
T2:=A*B
T3:=9+T1
M:=A*B
T4:=C-D
L:=T3*T4
T2:=C+D
N:=T2
画出DAG图;
设L,M,N 是出基本块后的活跃变量,请给出优化后的四元式序列。
答:

1. (6分)
L

*
T2,M T4 T2,N

* - +

T1 T3
3 A B 12 C D

2. (4分)
M:=A*B
S1:=C-D
L:=12*S1
N:=C+D

(8分)文法G(S)及其LR分析表如下,请给出串baba#的分析过程。
(1) S → DbB (2) D → d (3) D → ε
(4) B → a (5) B → Bba (6) B → ε
LR分析表
ACTION GOTO
b D a # S B D
0 r3 s3 1 2
1 acc
2 s4
3 r2
4 r6 S5 r6 6
5 r4 r4
6 s7 r1
7 S8
8 r5 r5
解答:
步骤 状态 符号 输入串
0 0 # baba#
1 02 #D baba#
2 024 #Db aba#
3 0245 #Dba ba#
4 0246 #DbB ba#
5 02467 #DbBb a#
6 024678 #DbBba #
7 0246 #DbB #
8 01 #S # acc
哈哈,估计认识!!

❸ 在51单片机中,需要使用命令将ACC的值写入A吗本人初学者。谢谢。

这是汇编指令才用到ACC和A,其实,就是一个累加器A,只是在不同的指令中写法不同。ACC是属于直接寻址指令,例如:MOV ACC , #10H ,这里的ACC是按物理E0H地址来寻址的,与MOV 0E0H , #10H 指令的寻址方式相同的,这指令编译后是3个字节。这指令的功能是把立即数送到累加器A中。
所以,这种写法很少。而通常都写成A,这是汇编指令中使用率最高的指令了,这是寄存器寻址。而且汇编指令中针对A 的指令也是最多的。
同样,用指令 MOV A , #10H,也是把立即数送到累加器A 中,可以编译后是两个字节。
回到你的提问上来:需要使用命令将ACC的值写入A吗?
那就是:MOV A , ACC,很显然是毫无意义的,就是把累加器的值再送回给自己,有意思吗?
但,ACC的写法还是有用的,对于累加器的8个位寻址时,需要这样写了
SETB ACC.1 ; 这是累加器A中第1位置1 , ACC.0是最低位
CLR ACC.0 ;这是累加器A中第0位清0, 就是最低位清0
如果写成: SETB A.1
CLR A.4
这就是错误了.

❹ C51将C代码汇编有ADD A , ACC 怎么回事

A与ACC都代表累加器,同一地址,但是在汇编里,写法A与ACC拥有不同的含义
A是包含在指令里的,指令码不同;而ACC却是作为操作数出现,代表地址
就相当于汇编指令有,MOV A,Rn同时也有MOV direct,Rn等不同的指令
MOV A,R0 与 MOV ACC,R0就会生成上述两种不同的机器码,但是结果一样

那么就好理解了ADD A,ACC就使用指令ADD A,direct,direct就是ACC符号所表示的地址,也就是累加器自己相加,相当于X2,也就是左移

❺ 在51单片机中,A和ACC的具体的关系是什么呢

A和ACC的实质是一样的,对应地址都是0E0H,
只是汇编在使用时,在格式上取了两个名字。
你看看它们的使用方法,有的地方用A,有的地方用ACC,会发现有一定的规律。
当其要进行位表示时,必须用ACC,
比如要写成ACC.7,而不能写成A.7
但当其作为8位二进制数时,ACC和A都能用
但还是有区别
比如 INC ACC和INC A 都能用
还有PUSH ACC POP ACC也可以写成PUSH A和POP A
当然,我们学汇编时,它主要是讲了一个格式,可能书上只讲到PUSH ACC,没有讲到PUSH A,没讲到并不代表它不能用。

❻ acc和gcc编译动态库的区别

编译动态库时,acc使用-b开关,gcc使用-share开关,acc使用-AA开关编译标准c++代码,-mt加入多线程链接,gcc使用-pthread开关,acc使用+Markered开关编译出cpp文件所需的头文件,并以xxx.d文件形式存放,acc和gcc的共同的开关有-I加入头文件目录,-l开关加入依赖的动态库链接,-L开关加入动态库搜寻的路径,-o开关输出目标文件,-g开关加入调试信息,-w开关加入警告级别。在64位的机器上,acc使用+DD32开关编译32位程序,gcc使用-milp32编译32位程序,此外,在64位机器上,默认是编译32位的程序。

❼ 关于accecc2013VBA做登陆窗口问题,系统提示第9行编译错误,请各位大神帮忙看看

在这一行中的逗号写成中文的逗号了,改成英文的逗号就OK了

ps =DLookup("UPasswd","user",Cond) 改成
ps =DLookup("UPasswd","user",Cond)

❽ 有关编译原理

⑴拓广文法 1 分
G[S ′ ]: S ′→ S ⑴
S → SaA ⑵ S → a ⑶ A → AbS ⑷ A → b ⑸
该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA :

⑵ 该文法的 LR(0) 分析表:
状态 ACTION GOTO
a b # S A
0 S 2 1
1 S 3 acc
2 r 3 r 3 r 3
3 S 5 4
4 r 2 r 2 /S 6 r 2
5 r 5 r 5 r 5
6 S 2 7
7 r 4 /S 3 r 4 r 4
⑶ LR(0) 文法:该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 中没有冲突状态。
该文法不是 LR(0) 文法
因为存在冲突状态: I 4 和 I 7
⑷ SLR(1) 文法:该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 中有冲突状态,冲突可用 FOLLOW 集解决。
该文法不是 SLR(1) 文法。
因为 FOLLOW(S)={a,b,#} ,所以无法解决冲突

❾ c51程序 关于ACC累加器的使用

我也曾遇到你说的这个问题,巧的很,也是写DS1302的程序,我觉得与ACC关系不大。因为
我当时并没有使用ACC的位变量,而是你第二种方式(temp&0x01)。当用for(i=0;i<8:i++)时就是不行(怕写错,反复写了几次,都不行),只有改为for(i=8;i>0:i--)时就正常。当时也是百思不得其解。当我把整个程序写完以后,再回头研究这个问题时,发现改为for(i=0;i<8:i++)时竟然又正常了。到现在我也不明白开始为何不行,也记不清其间又改动了什么。
理论上讲两个应该完全等效。一般情况下效果应该完全相同。但我确确实是遇到上述现象,这也是我写程序历史唯一碰到的一次。
我后来在某些书上看到,使用for(i=8;i>0:i--)比for(i=0;i<8:i++)优化,速度也更快。
这里回答你,主要做个关注,看看有没有人也遇到同样的问题,并知道问题的所在。

补充:网上搜了一下,我更同意时序的观点。供参考
http://bbs.21ic.com/icview-44006-1-1.html
另外,我觉得还可能与MCU 芯片有关,我出现问题时用的是STC89C52。你可以写到华邦的78E51试试,因为我好几次发现将文件写到STC芯片有问题时,而华邦的芯片却完全正常。

❿ HP-UNIX aCC编译C++的问题,cin 整形变量输入字符出现问题

在 使用cin之前 加 cin.clear(); 也可以加个检测语句 if(!cin){cin.clear();}
或者分配内存 cin.getline()在 strtoi()自己从一行字符中获取数字

热点内容
sqlserver连接驱动 发布:2024-05-06 00:33:34 浏览:645
存储开销 发布:2024-05-06 00:13:38 浏览:953
服务器怎么盈利 发布:2024-05-05 23:56:16 浏览:941
java网站培训学校 发布:2024-05-05 23:43:11 浏览:40
淘宝搜索算法 发布:2024-05-05 23:37:07 浏览:998
sqlwhencasethen 发布:2024-05-05 23:27:51 浏览:641
模架编程软件 发布:2024-05-05 23:26:54 浏览:483
存储过程异常 发布:2024-05-05 23:24:03 浏览:399
winxp访问不了win7 发布:2024-05-05 23:05:23 浏览:734
算法牛 发布:2024-05-05 22:43:40 浏览:720