- 积分
- 142
- 最后登录
- 2022-7-2
- 精华
- 0
- 阅读权限
- 20
- 主题
- 25
- UID
- 961938
- 帖子
- 355
- PB币
- 1
- 威望
- 0
- 贡献
- 0
- 技术
- 26
- 活跃
- 340
- UID
- 961938
- 帖子
- 355
- PB币
- 1
- 贡献
- 0
- 技术
- 26
- 活跃
- 340
|
发表于 2011-10-30 18:34:50
IP属地广东
参考了VIVXIX的方法,我来写个128字节的拆分和使用,因为我的EC0里存在很多128位的。
Method (BB2W, 2, NotSerialized) //2个8位二进制的参数左移连接成16位二进制
{
ShiftLeft (Arg1, 0x08, Local0)
Or (Arg0,Local0,Local0)
Return (Local0)
}
Method (BB32, 4, NotSerialized) //4个8位二进制的参数左移连接成32位二进制
{
Store(BB2W (Arg2, Arg3), Local0)
Store(BB2W (Arg1, Local0), Local0)
Store(BB2W (Arg0, Local0), Local0)
Return (Local0)
}
Method (B128, 4, NotSerialized) //4个32位二进制的参数左移连接成128位二进制
{
ShiftLeft (Arg3, 0x20, Local0)
Or (Arg2,Local0,Local0)
ShiftLeft (Local0, 0x20, Local0)
Or (Arg1,Local0,Local0)
ShiftLeft (Local0, 0x20, Local0)
Or (Arg0,Local0,Local0)
Return (Local0)
}
例子:
Field (RAM, ByteAcc, NoLock, Preserve)
{
Offset (0xE0),
//BSMN, 128 将128位分成16个8位
SM00, 8,
SM01, 8,
SM02, 8,
SM03, 8,
SM04, 8,
SM05, 8,
SM06, 8,
SM07, 8,
SM08, 8,
SM09, 8,
SM10, 8,
SM11, 8,
SM12, 8,
SM13, 8,
SM14, 8,
SM15, 8
}
B128与BB32两个函数结合的使用方法例子:
Store (B128(BB32(SM00, SM01, SM02, SM03), BB32(SM04, SM05, SM06, SM07), BB32(SM08, SM09, SM10, SM11), BB32(SM12, SM13, SM14, SM15)), Index (Arg1, 0x0C))
好像一个函数可以传递8个参数,但是实际不可以,编译时出错,我只好拆成4个参数了的。
编译没有问题,实际使用,待验证中。 |
|