Search Posts

Category: Kernel

Assembler dev meeting #13

2019/09/14, we met in cityu again. I finished IMM in other project https://gitlab.com/quantr/toolchain/antlr-calculator-library . So Assembler’s parser will eat up the whole numeric string and then pass it to antlr-calculator-library, if it contains a maths expression, it return the final answer which is a number. I created another library to produce ELF output. Jenny and […]

Assembler dev meeting #11

sync-ed up Jenny coding skill to all of us. Jenny now clearing all useless code, rename variables to a more meaningful name. Our next job is to encode all instructions together, and for me, create an ELF library to output ELF format object code. Here is our tuned assembler grammar https://gitlab.com/quantr/toolchain/Assembler/blob/master/src/main/java/hk/quantr/assembler/antlr/AssemblerParser.g4

Assembler encoding test : 16-Bit Addressing Forms with the ModR/M Byte

Code to test “16-Bit Addressing Forms with the ModR/M Byte” // String instruction = “adc byte [ si+0x12], 0x1+0x20x3″; // String instruction = “adc byte [bx+si], 0x1+0x20x3″; // String instruction = “adc byte [bx+di], 0x1+0x20x3″; // String instruction = “adc byte [bp+di], 0x1+0x20x3″; // String instruction = “adc byte [si], 0x1+0x20x3″; // String instruction = […]

Autoconf不能跑得很快的原因

Autoconf不能跑得很快的原因是因為它會為每一個feature去compile一個很小的測試程式去測試那個feature能不能被正確編譯出來,在底層系統的世界,因為歷史原故,我們不能好簡單的判斷在你的dev machine裏有libXXX.1.2.3.so就認為你的代碼能正確地編譯出來,因為好多時library的作者更改了代碼但沒有升級版本號。如果要令你的c/c++程式能誇平台編譯,版本號也是沒有絕對意義,因為同一個版本的library在linux和在unix上有着實質的不同。最誇張的例子就是有些庫在linux上是存在,但在unix上是不存在,所以autoconf要為每一次編譯去逐個測試,所以實在快不來,這一點和java/nodejs世界的build system有非常大的不同。

Assembler嘅HLA邊界

寫Assembly用到Marco就試過N次,之前都係用到點就學到邊,無了解過佢嘅邊界,而家差唔多去到要為自己嘅assembler研發marco,所以要先睇下HLA嘅Marco大約可以做到啲乜。沙田圖書館係有唔少好書。 書中講左句: 啲人係用Assembler嘅Marco有幾勁黎判斷個assembler有幾勁,無錯,啲人確實係甘諗。以下就係關於assembler功能上嘅總結: Compile Time Operators. (E.g. : +-*/, <<, >> =, <>) Operator Precedence and Associativity (E.g. : !, -, div, mod) Compile Time Functions Type conversion Numeric functions Character-Classification functions (E.g. : isAlpha, isDigit, isSpace) String functions Symbol information (E.g. : @size, @define @typeName, @elements, @elementSize) Misc compile time functions (E.g. : @odd, […]

Linux创始人畅谈开源操作系统

http://www.infoq.com/cn/news/2015/08/LinuxCon2015 Linux创始人林纳斯·托瓦兹(Linus Torvalds)在今年LinuxCon2015会议上的自由提问环节中,向与会者分享了他对开源软件和Linux现状的思考。对开源系统安全性、Linux在物联网中的应用、未来Linux发展蓝图等问题,Torvalds一一做了精彩的回答,eweek、zdnet等媒体都进行了报道。 此次自由提问环节的主持人是Linux基金会的执行董事吉姆·泽姆林(Jim Zemlin)。 像福特一样改造生产力的伟人 主持人Zemlin引用了近期一篇介绍Torvalds的文章作为问答交流环节的开场。Linux操作系统广泛用于现代社会的方方面面,上至卫星火箭,下至成百上千的谷歌服务器。Torvalds作为Linux操作系统的创始人,被认为是继一百年前发明流水线的汽车大王福特以后,再一次通过改进生产工具创造了极大经济效益的影响力人物。Torvalds回应说,自己并没有那样伟大,不过确实很高兴因为开源系统而获得了这些赞誉。可以说,Torvalds在技术上的影响力超过了比尔·盖茨、史蒂夫·乔布斯以及拉里·埃里森,然而Torvalds始终保持谦逊,也可能正是因为这样,他作为Linux领导者的地位始终无法动摇。 缺陷始终存在但并非不安全 接下来Zemlin提了一个关于Linux系统安全性的问题,这个问题自去年开源系统遭遇Heartbleed和Shellshock等漏洞以来备受公众关注。Torvalds解释说,安全共同体常常把问题绝对化,非黑即白。然而在他看来,安全问题只是程序缺陷,基本上都是十分低级的错误。只有当少数极端聪明的人想到利用这些漏洞时,才会造成危害。而在大多数情况下,通常没有人会打这些错误的主意。他强调道,任何软件都不可能彻底没有缺陷。由于有程序缺陷的存在,Linux系统的安全性不可能十全十美。Torvalds同时强调,开源社区对于Linux内核十分谨慎,在加入代码时有着一套严格的标准。只有承认程序缺陷不可避免,才能真正解决安全性问题。唯一的解决方法是多层化,当在某一层发现漏洞后,则在下一层进行修补。无懈可击的系统是不切实际的,问题总是存在,所要做的就是不断完善。 当被问到2015年LinuxCon的热门话题Docker容器时,Torvalds并没有表示出太大的兴趣。他解释说,Linux内核与这些热门的概念没什么关系,作为基础架构者,他只关心人们如何使用内核。 更小、更精致?可能真没办法 目前物联网(IoT)正在蓬勃兴起,作为硬件基础的嵌入式系统大多使用的是Linux操作系统。Torvalds认为,Linux在物联网设备上的瓶颈是其大小不断增长的内核。虽然尝试过开发小而精的物联网设备内核,但是始终难以摆脱不必要的冗余。实际上,Linux内核无法达到像20年前一样的简约规模,但也可以一定程度上地简化缩小。不过Torvalds依然遗憾地告诉大家,如果想要设计出真正精致小巧的设备,只能寻找其他解决方案。 比起未来,更关注现在 最后主持人问到未来十年Linux的前景和计划,Torvalds回答说,他并不会去设想那样遥远的未来。Torvalds自认为是一个“蹒跚的行者”,只会考虑未来六个月的事情。关注于当前的版本发布以及下一版的发布才是理智之举,安排十年后的计划显得十分荒谬。即使让他返回到十年之前,他也没有办法预想今日Linux的成绩。不过,虽然他本人不关注未来十年的发展,但并不是说Linux没有关于未来的愿景。使用开源系统的公司会为未来十年进行规划,它们有着明确的需求,因此在推动自己公司计划的同时也会推动Linux发展。所以Torvalds总结道,就算他本人不是前瞻性的领导者,这整个过程也会促使Linux完成前瞻性的行动。

Description of the first few entries in GOT table

Description of the first few entries in GOT table GOT[0] : The table’ s entry zero is reserved to hold the address of the dynamic structure, referenced with the symbol _DYNAMIC . This allows a program, such as the dynamic linker, to fi nd its own dynamic structure without having yet processed its relocation entries. This is especially […]

Next Page »