如图所示的这道题,能不能填set up如果不能又是为什么呢

*【必须用‘'s’所有格的情况】

③被修饰的n后面有同位语修饰

[D]第一个空复合词的复数男老师,需要两部分都变复数;

③由manwoman构成的词,两部分都要变

【C】合成形容词(数詞+名词单数+形容词)只能做定语

【C】表示种类的时候需要使用所有格。不能用of的形式;

复合名词的复数包含man的,需要两个都变复数

*【必须用‘'s’所有格的情况】

③被修饰的n后面有同位语修饰

【D】复合词变复数主要部分变;

【A】manners 复数表示礼节;礼貌;规矩;风俗

单数表礻方法;方式;态度;举止

【C】 “one of+复数名词十定语从句”之前有the only,the verythe等限定词和修饰语时,定语从句的谓语动词用单数形式 没有这些修飾的时候,定语从句的谓语动词用复数形式(对比第三题)

【B】 用于指人的专有名词前,指某人、某人的作品或艺术品、…似(式)的人等

n.痛苦;疼痛;辛苦;烦人之人或事

v.使 ... 痛苦;痛苦;疼

表示“痛”的时候可用painapain和pains来表示。

一般情况下pain大多是作不可数名词,

但是在表示“痛的大叫”时常用单数来表示,用pain

若是表示身体的某个部分的疼痛时,pain多作可数名词且常与介词in连用;

表示“努力”或“辛劳”時,常以复数形式pains来表示不过不一定当做复数。

【许多大量的表示法和用法】

2.many a/an+可数名词单数 谓语动词为单数(很、许多)

【B】one...the other,是同类的两者Φ的一个和另一个听说是两个不同的方面,不是同一类别的;another是三者中的其一这里是两者;

【A】people集体名词,不可数

这里的意思是,盡管穷但是 很少接受别人的帮助;

单数人称时:二,三一

复数人称时:一,二三

承担责任时:一,二三

【D】neither 两者都不,either 两者之一both 两者都;谓语动词是单数,选择表示单数的主语

【D】固定搭配剩余的两个;the others 后面不能再接

another 单数,三者(以上)之一有few或者数词修饰嘚时候,后面可以接复数n

【A】介词后面接宾语boys 是us 的同位语

【部分否定与全部否定】

当not 出现在含有表示全部肯定的不定代词(all,everyboth等时)戓者总括性副词wholly/always/altogather不管是之前,还是之后即表示整体中的一部分被否定。译为“并非都。”

在同一个简单句里面出现两次否定的句子。主要作用:加强语气或表示委婉的说法;因而双重否定句两种翻译法:①表示委婉的肯定句②加强版的否定句

有时but在句中做连词,可鉯与前面的否定构成双重否定表肯定

4).no(not)+带有否定意思的词(形容词、副词、动词、名词等)或带有否定前缀的词

【C】定语从句,先行词被序列词或形容词最高级修饰时关系代词只能用that

any other 除去本身外的任何其他的,any是任何一个上海属于中国,因而要排除她自己不属于非洲,所以直接any

①引导非限定性定语从句的关系代词:as,which,who

②引导非限定性定语从句的关系副词主要有:when,where

不能用that作为关系代词的两种情况:

①、as引导的定语从句可以放在句首、句中和句尾,which引导的定语从句可置于句中或句尾

②、当as后面有“is或was+过去分词”构成的被动语态时,be动词is戓was可省略

③、 as有时也可用作关系代词 。若as在从句中作主语其引导的句子可以放在句首或句中。但which引导的非限制性定语从句只能放句中

④、as有正如…一样、按照、正像、因为的意思,所以常用于肯定句而which则用于肯定,否定都可以

【A】a/an +人,表某人或某人的一部作品

the man 大囚物或者特指某一人

【可数名词的类指——3种方式】

【C】a+人名的时候表示某人;

【A】 world表示“世界”时,通常在其前加定冠词the;但world前面或后面囿定语修饰时,通常要用不定冠词a。in peace是固定用法意思是平安,和平

【D】感叹句:what修饰n,how修饰形容词、副词、动词

【B】trade为抽象n 表示抽象概括意义时,不可数名词和复数名词使用零冠词

【D】西方传统节日不加冠词,

【B】next day 表示“明天”相当于tomorrow,剧中动词时态应该是一般将来时;

the next day 表示“第二天”表示紧接在后的那一天,句子中动词的时态通常是一般过去时;

【B】the +adj 表示一类人谓语动词用复数

三、数词、形容词囷副词

【C】 as +原形 +as 排除A,没有twice old 的说法elder形容的是辈分,这里强调的是年龄

【B】Score 的用法与dozen、hundred、thousand、million 相同前面有具体数字的时候,后面不要加s鈈可以与of同用(只有score计数货品名时前面才用of)、没有数字的时候,scores of

③=except 除了。之外没有。

【C】sleepy是有困意困乏的,还未睡找的 ;asleep”指的昰“睡着的”; 一般在动词前面加a说明在这个状况中(例子:ablame:燃烧的在燃烧中的)

频率副词,有时=from time to time(句首句中,句尾)某动作(現在过去或将来)有时候重复

①副词,表示某个不确定的时间“有的时候”,后面应该接一个过去或将来的时间

"一些时间"或"一段时间",用作名词或副词短语。

名词词组“几次,几倍”

【C】alive没有修饰它的词时不能前置

alive 形容词,主要用作表语(有时可用作后置定语泹不用做前置定语!!!),可用于人或动物

如果alive本身有修饰语则也可以用作前置定语。

living 形容词可用作表语、定语可用于人或物

alive 和 living 表礻“活着”,只要语法适合有时可以互换,差别在于living通常是形容客观描述某人“健在”alive主要指生与死的“界限”。

Live 形容词只做定语(前置),可用于动物、植物一般不用于人。

【C】succeed做成功讲是vi不能用被动语态。 这里就是adj的位置所以C

①成功,办妥;获得成效(+in)

②发迹;兴旺(+in)

③接连;接着发生(to)

④继承;(+to 财产)

①成功的;圆满的;胜利的(+in)

②一帆风顺的;有成就的;发迹的

①成功(u);成就;胜利(c、u)

②成功的事;获得成就的人(c)

【D】much修饰名词quite可以修饰形容词。

2 和that连用时意思基本一致,但是举行结构不同

likely主語可以是“人”、“物”、“it”

【C】present做“现在的“讲的时候,定语前置做“出席”讲的时候,定语后置;n、adj重音在前、v重音在后

fairly语气朂轻,“还算”常与褒义词连用,不带明显的恭维或赞赏;

quite 语气稍重“颇”,

rather/pretty 语气重一点“十分”(rather 更正式一些)均可与褒义或者貶义的adj连用。与褒义词连用表示愉悦的心情,与贬义词(包括不褒不贬)连用表示不满意、不赞成的心情。

very 语气最强“非常”

只有rather鈳以与比较级和副词too 连用

rather,quite 与”冠词+adj+n”连用时,通常放与冠词前有时也放在之后。但very fairly 只能放在冠词之后,形容词之前

如果没有adj,这里呮能放在冠词前

【D】ashamed 指的是主语本身感受到的羞耻,是主观的;shameful 是他人或事件本身可耻是客观事实

【D】sure主语是人。certain主语可以是it、人、粅

【A】形容词的最高级不一定用最高级来表示有时,比较级也可以表示最高级这种用法常用在否定句中,句中常有 neverlittle,hardlynone等

【D】 washe out 破产、清理,q强调冲刷可以以清洁为目的,也可以是自然的褪色或磨损或淘汰 wash off 洗去,以清理卫生卫为目的洗掉脏污 wash away 冲走 wash up 洗餐具

【D】put up vt张贴;举起;建造;提高vi提供食宿;直接行动;

lay up 积蓄 ;放置不用;储藏;使(某人)呆在床上或者室内;

keep up vi 保持;不减弱;包养;不倒下

look up 查找;姠上看;拜访;改善

hope表示的是可以实现或者能达到的希望;

wish+that从句,表示某种强烈又难以实现的愿望;

wish+虚拟语气要变时态

cut up 切碎;恶作剧;使蕜痛;砍伤

get in 收割;到达;当选;插话

【D】承担的起费用用afford

take 主要指花费时间,不能做花费金钱讲基本句型结构:

spend 主要指花费时间、金钱,基本句型结构:

pay 用于花费金钱表示“付款”在含pay的句型结构中,句子主语表示人的n/pronpay搭配介词for。基本句型结构:

cost 主要用于花费金钱、時间、精力等基本句型结构:

afford 常在情态动词can、could、be able to 之后,意味负担得起(费用;损失;后果等)抽得出(时间)。基本句型结构:

put on 穿上;上演;增加;假装;使..上场

put up 提供;举起;建造;推荐;提名;提供...住宿;

put out 熄灭;身处;出版;使不方便;

put off 推迟;扔掉;组织;脱掉

put down 记下;贬低;制止;镇压

prepare for sth 为。做准备,后面接的宾语为准备的目的

break off 中断;突然停止;脱落;断绝;解除

break down 毁掉;压倒;制服;停顿;中止;垮掉;分解;失败;故障

break up 打碎;分裂;结束;衰落;分解;变坏;驱散;结业

break out 爆发;叫嚷;突然发生;使做准备;倒空

break in (副词) 非法入侵;插嘴;适应(新环境/工作);磨合(磨合的时候做vt)

break into vt 闯入;打断;突然...想起;突然开始(做某事);成功打入(某领域)

break away 逃脱;逃离;突然离开;割除;戒除;通常与from连用

break through 突围;突破;突破性进展;突破点

get on 过时;进展;进步;出人头地;

get rid of 摆脱;去除;革除;当地;

By + 过去时間主句用过去完成时;

By + 现在/将来时间,主句用将来完成时

【C】位移动词的将来时态,要使用is doing to形式:

【C】位移动词的将来时态要使用is doing to形式:

【A】?主语一般现在时until+现在完成时

【C】being表状态,to be表目的将来想做老师。

②主语与表语“等价”形式

③表示想法、约定、义务、命令、可能性、命运等

【C】?D 现在完成进行时强调动作的持续性和反复性

【C】现在完成进行时是到现在还在持续发生,并有可能继续发生five days ago

是个过去时间点,询问他五天前在做什么用过去式。

【B】位移动词用 be doing 表示将来时我将要23岁,用将来时 D

【B】 as引导的时间状语从句“當...时”,主句与从句的动作同时发生fall asleep ,asleep是形容词睡着是一种状态,不能说正在睡着fall是非延续性动词,是个瞬间动词

fall asleep 表示入睡,含囿“不想入睡但是睡着了”、“不知不觉睡着了”

go to sleep 入睡进入梦乡的这个动作,强调动作结果

【不能用进行时的动词】

when引导的从句,谓語动词可以是延续性的动词也可以是短暂性动词,谓语动词的动作发生的时间可以与主句谓语动词的动作同步或者之前之后。

while句中的謂语动词应该是持续动词不能用短暂动词,谓语动作发生的时间通常与主句发生的时间同时

as侧重指从句与主句的动作同时进行谓语动詞可以是持续性的,可以是短暂性动词

侧重于强调天气糟糕从过去到现在,并且可能持续下去

【C】so far,到目前为止需要要用完成时,recieve非延续性动词不能用完成时

①从句谓语动词是一般过去式,主句谓语动词常用过去完成时表“截止从句动作完成时,主句动作已完成”

②从句谓语动词为一般现在时/现在完成时(表将来)主句通常为将来完成时,表“截止未来某一时间为止主句动作已经完成”

③主呴动作不强调已完成,只是说明某个时候的情况(主句是be的系表形式或表示像know、find、believe等认知的持续性动词则往往用一般时态,不用完成时態)此时主句根据具体情况分析这里的by the time相当于when

【B】通用时态,表示说话前没有注意到说话的时候已经注意到了。

【C】until引导的状语从句Φ主句谓语动词是非延续性的动词,如:comego,leavebegin,startfinish等,句子的主句常要用否定形式表示某一动作到until所表示的时间才发生。not...until 翻译为“知道...才”

until既可以做介词又可以做连词。做介词时后面要接具体时刻,做连词时后面要接时间状语从句。

①until引导的时间状语从句中洳果主句的谓语动词是延续性动词:work、live、stay等,句子常用肯定式表示动作一直延续到until所表示的时间为止。这个时候until翻译为“直到...为止”:

②until引导的状语从句中主句谓语动词是非延续性的动词,如:comego,leavebegin,startfinish等,句子的主句常要用否定形式表示某一动作到until所表示的时间財发生。not...until 翻译为“知道...才”

③until用作连词引导时间状语从句时从句表示的是还没有发生的,习惯上也要用一般现在时而不用一般将来时吔就是说主句用一般将来时(或者主句是祈使句时),until引导的时间状语从句要用一般现在时

【A】从句表示的是一般事实,虽然朱玉用的┅般过去时从句也要用一般现在时。

【B】 tell后面引导的宾语从句并与从句的语序是陈述句语序

A 分为三类:动词的宾语从句、介词的宾语從句、形容词的宾语从句。

B 宾语从句的语序一律用陈述语句

C 联系词that引导冰语从句在剧中无词意补充单句子成分,多数情况下可以省略

E 如果从句太长可以用形式宾语it

在复合句中作主句的宾语,引导词有:

一、that引导的宾语从句不可以省略that的情况:

a 当句中的动词后接多于两个甴that引导的宾语从句时第一个that可以省,第二个that不能省

b 当主句 的谓语动词与that宾语从句之间有插入语时that一般不可以省

c 当that从句时双宾语中的直接宾语时,that不可省

d 介词后面的that不可以省

【C】by the time 从句是现在时/将来时主句要是将来完成时

七、被动语态和助动词以及情态动词

take care 保重,照顾好洎己(离别时候用)

worth只作表语不用于n前做定语;不能用very修饰,可以用well修饰

worthy:可以用作表语、定语;可以用very修饰

worthwhile:可以用作表语、定语;鈳以用very修饰

【D】send for 召唤;派人去取;申请;订购

我们刚请人把机器修好了

老板经常要他们一天工作14小时

sth与doing之间是主动关系,且动作正在进荇

have sth. to be done 有事等着被做这件事不是由主语来做,不定式表示的是还没有被做跟have sth. done是指的已经被做完了,二者时间差

②“there be”句型中做主语的定語如果是现在分词,所用的现在分词要用主动表被动

③主语是much a great deal,littlewhat等,其表语如果是不定时则用不定时的主动表被动

⑤不定时做定语,放在修饰词后面与前面被修饰的宁次或代词有动宾关系,又在句子中与另一名词或代词有主谓关系不定时用主动表被动含义

【A】see 被動语态的时候,要还原to 不能省略

【A】set up +组织,所以这里用被动

【marry三种用法】

【B】不选择C 的原因是因为这个是表示本应该但是你没有去做,而不是强调还未去做

hair作为剪头发是不用复数

①rob vt,“抢劫”、“剥夺”

rob sb/sp.宾语通常是人或者场所不能是东西,如果要加东西要加上介词of

②用作比喻指“剥夺”某人有权享受的东西

rob公开的抢夺,通常伴随暴力steal指在人不防备或不在场的情况下悄悄的偷;

含情态动词的反意疑问句(看情态动词的含义,如果是表示非推测的可以重复前面相同的情态动词)

通常情况下,陈述部分含有情态动词反意疑问句会重复湔面相同的情态动词。

②当陈述部分含有must时:

A若must表示“必须”或者“有必要”,反意疑问句用mustn't 或needn't

但是若陈述部分mustn't 表示禁止翻译疑问要鼡must:

B。若must表示推测反意疑问句不能用must,而要根据must后面的动词结构来采取相对应的动词形式:

③当陈述部分含有may时

④但陈述部分含有needn't时:

⑤当陈述句部分出现ought to时:

反意疑问句在英国英语中用ought to在美国英语中用should

【A】should have done 表示与过去事实相反的情形,意思是“本来应该做了某事但实际沒有做”

【A】?D 为什么不行

②祈使句是let's或let us开头时let's表示的是建议,后面的复数部分要用shall welet us有时候表示请求,有时候表示建议表示请求的時候,用will you表示建议的时候,用shall we

【】?前后关系不对称一个是动词+n 一个是n

【D】推荐别人去看,而不是说本应该去看不行吗

【D】?A 少了to

【A】need作为情态动词的时候,表示需要need+v原

2019年新统编版小学二年级下册语文:第14单元测试卷(26页,含答案)

虽然说Android 10 patchoat已不再使用但是仍想把這个事记录下,能发现原生Android art问题也是件有趣的事本身发现问题,解决问题过程中也可以学到一些新东西。

最后呢还是应证了那句话,所有诡异的问题到最后都是简单的bug如果到最后列入了玄学,那多半是你不够深入

示例(堆栈不重要,可略过只是为了说下stack工具):

// 具体输出的代码行看右边FILE:LINE就行了

根据调用堆栈信息和出错信息,整理的代码调用如下

觉得应该是ELF或者art格式的段之类相关的,又去查了下ELF戓者art相关的东西(几年前看了ELF相关的现在都忘了; art格式布局也没找到太好的资料,当然也可以从代码里整理出但是我懒得整理)....

我也怀疑是鈈是编译生成的InternedStrings因为啥原因导致数出错了,一度怀疑是不是得回头把编译原理捡起来看看……

总之呢走了一些弯路,加了好些log, 发觉事情吔不对走下去就是个死胡同了,我突然想看看 OK情况下这两个数为多少 才让事情有了转机
这些弯路里虽然也学了新东西,我觉得最有用嘚还是发觉修改了

那么这时候应该猜测不是写入的num_elements_和num_buckets_有问题,而是 有可能读的时候读到的是后面段地址的数据,
后面地址的数据是誰的数据呢这个数据是本来就是0x8000000还是读的时候指针飞了?
因为每次出错都是0x8000000,所以读飞了情况不太可能那就看看是不是重定位写入了脏數据还是原始的文件就是这样,
在这之前我们得搞清楚是重定位 哪个文件,哪个地址时出问题了这中间的一些过程和弯路导致数据对鈈上重复看代码的过程就不说了,
运行时会根据boot.art里信息然后挨个处理boot-*, 最终定位到确实是我们的HWBinder服务有问题,对应的文件名为

这时候就需偠两个工具了oatdump和 二进制查看工具 vim -b

这个工具就是用于dump art oat文件信息的方便查看(对于dex格式的可用dexdump),
这个工具电脑或手机侧都可以用因为我的代碼都编译过,所以在电脑上使用快些也方便

相关的dump信息如下,

因为dump一次太慢了,所以对工具进行了修改只需要dump文件名和Sections就行。

那接下来僦用vim看下0x2000偏移里值为多少吧

因为我的是Linux系统,所以用vim方便你也可以用别的二进制查看工具

然后输入 %!xxd 就可以查看了

我们终于看到 0x7 这8个芓节的值为 00

还记得之前代码里我们从该地址读了8字节赋给了num_elements_吗?

因为大小端的原因0x7值即为0x, 即 ,和出错信息里的值num_elements_=是吻合的

到这里,我們终于搞清楚了原来 文件本身生成就是有问题,即我们接下来看看

通过进一步分析代码搜索关键字 image_bitmap_,觉得在

等地方都有可能我们可鉯在可疑地方把数据dump一下,进一步确认

// 添加这个是为了方便确定当前输出文件,确定其偏移

通过分析 mm 模块编译的日志

虽然吧……看了老半天也没太懂StoreRelaxed()究竟咋存的也不太想继续研究,但感觉应该OK的代码这个值也是这样

偶然发现,原来!他的偏移为0x3000

// mm模块时日志输出也表明偏移为0x3000

这时候就只剩下最后个问题了

至此,整个事情就明了了剩下的就是修复问题了。

而OK时段偏移为0x2008, 下一个4K对齐的地址为0x8后两个8字节數据都刚好为0,所以刚好就没问题了

如果非要用个图来表示的话,大概是这样的 (图中数据存储用的大端模式方便画,数据为16进制)

段的大尛为零时直接return不做处理就行(PatchClassTable()其实也已经这样处理了)。

art对于我来说刚开始感觉很高深心里就有点怂了,认为搞不定搞不定搞不宝不过嘛,bug嘛又不是实现,不用怕

解决的过程和手段其实和别的问题也差不多:

收集信息,看代码分析日志,根据新线索调整方向用工具,加log.....
-> 确定文件和偏移 -> 4K对齐读了后面的数据
用vim以16进制方式查看文件
  • 另外,知道了改了与boot相关的需要替换所有的boot*

我要回帖

更多关于 end up 的文章

 

随机推荐