It is the presentation file used by Jim Huang (jserv) at OSDC.tw 2009. New compiler technologies are invisible but highly integrated around our world, and we can enrich the experience via facilitating LLVM.
Linux uses /proc/iomem as a "Rosetta Stone" to establish relationships between software and hardware. /proc/iomem maps physical memory addresses to devices, similar to how the Rosetta Stone helped map Egyptian hieroglyphs to Greek and decode ancient Egyptian texts. This virtual file allows the kernel to interface with devices by providing address translations between physical and virtual memory spaces.
The key problematic instructions for virtualization on ARM are those that change processor state or mode, access privileged resources, or cause unpredictable behavior when executed in user mode. These must be trapped and emulated by the virtual machine monitor.
This document provides an introduction to GDB (GNU Debugger) including what it is, why it is useful, basic GDB commands, and examples of using GDB to debug a C program. Key points include: - GDB is an interactive debugger that allows debugging of C/C++ programs. - It helps developers find bugs by allowing them to watch/modify variables, determine why programs fail, and change program flow. - Basic GDB commands demonstrated include breakpoints, backtraces, printing variables, and stepping through code. - An example program is debugged using GDB to step through functions and view variable values.
2016年2月20日(金)のZynq Ultrasclae+ MPSoC 勉強会で使った資料です。 追記) 2016.05.08 公式ARM Trusted Firmwareのサイトに、Zynq UltraScale+ MPSoCの実装が追加されていていることを明記した This is the material I used at Zynq Ultrasclae + MPSoC SIG on 20th February (Friday). Addendum) 2016.05.08 We stated that the implementation of Zynq UltraScale + MPSoC was added to the official ARM Trusted Firmware site.
The document discusses using the GNU Debugger (gdb) to debug applications. It covers when to use a debugger, invoking and configuring gdb, setting breakpoints, examining stack frames and data, disassembling code, and viewing registers. Gdb allows stepping through code, viewing variables and memory, and setting conditional breakpoints to debug programs.
Let's turn the table. Suppose your goal is to deliberately create buggy programs in C and C++ with serious security vulnerabilities that can be "easily" exploited. Then you need to know about things like stack smashing, shellcode, arc injection, return-oriented programming. You also need to know about annoying protection mechanisms such as address space layout randomization, stack canaries, data execution prevention, and more. These slides will teach you the basics of how to deliberately write insecure programs in C and C++. A PDF version of the slides can be downloaded from my homepage: http://olvemaudal.com/talks Here is a video recording of me presenting these slides at NDC 2014: http://vimeo.com/channels/ndc2014/97505677 Enjoy!
「哥教的不是知識,是 guts !」 GUTS: 與其死板傳授片面的知識,還不如讓學生有 能力、有勇氣面對資訊科技產業的種種挑戰
This document discusses tips and tricks for using the Vim text editor. It begins with an introduction to Vim and emphasizes the importance of learning basic Vim commands. It then provides recommendations for basic Vim training materials. The bulk of the document focuses on introducing 15 useful Vim plugins and customizations that can be made in the ~/.vimrc file. These are meant to enhance Vim's functionality and usability for tasks like code completion, indentation, commenting code, and diff/merging files. Links are provided to external resources for further reference.
The code compares pointers and arrays in C by printing their sizes and string lengths. When a string literal is assigned to a pointer, sizeof(pointer) returns the pointer size rather than the string length, while sizeof(array) returns the full array size including the null terminator. strlen(pointer) and strlen(array) both return the string length excluding the null terminator. When an array is passed to a function, it converts to a pointer and sizeof then returns the pointer size rather than full array size.
本簡報大量引用網路討論,試著從阿妹、江蕙演唱會前,大量網友無法透過線上購票系統順利購票的狀況,以系統設計的觀點,去分析這些線上購票系統出了哪些問題
ATF(ARM Trusted Firmware)は、ARMv8では重要なソフトウェア。 全体を利用するのではなく、その一部を利用可能。 この資料では、BL31(EL3 Runtime Firmware)を単体で使う場合、どうすればいいのかを、Xilinx社のZynq UltraScale+ MPSoCを例に説明しています。 ATF (ARM Trusted Firmware) is an important software in ARMv8. Instead of using the whole, part of it is available. This document explains how to do when using BL31 (EL3 Runtime Firmware) alone, for example, with Xilinx's Zynq UltraScale + MPSoC.
This document describes setting up a QEMU virtual machine with Ubuntu 20.04.1 to debug Linux kernel code using gdb. It has a 2-socket CPU configuration with 16GB of memory and disabled KASAN and ASLR. The QEMU VM can be used to run sample code and observe Linux kernel behavior under gdb, such as setting conditional breakpoints to analyze page fault behavior for mmap addresses by referencing a gdb debugging text file.
The document discusses three sanitizers - AddressSanitizer, ThreadSanitizer, and MemorySanitizer - that detect bugs in C/C++ programs. AddressSanitizer detects memory errors like buffer overflows and use-after-frees. ThreadSanitizer finds data races between threads. MemorySanitizer identifies uses of uninitialized memory. The sanitizers work by instrumenting code at compile-time and providing a run-time library for error detection and reporting. They have found thousands of bugs in major software projects with reasonable overhead. Future work includes supporting more platforms and detecting additional classes of bugs.
The document provides an overview and summary of the Gnash project, which aims to create a free and open-source Flash Player implementation. It discusses Gnash's support for SWF version 7 features, compatibility with Ubuntu Linux, and methods for compiling and using Gnash from source code. The architecture of Gnash is also briefly outlined, including components like the virtual machine, parser, garbage collection implementation, and how individual ActionScript actions are executed.
The document provides an introduction to Lucene, an open-source text search engine library written in Java. It discusses Lucene's history and architecture at a high level, how it parses query terms and fields, and supports modifiers and Boolean operators to connect terms. The summary also lists some common sub-projects built with Lucene like Solr.
The document discusses the origins and concepts behind the Ruby on Rails web application framework. It notes that Rails was created in 2005 by David Heinemeier Hanson to address the "lost Quality of Engineering Life" felt by many programmers. Rails aimed to make programming more fun and productive by embracing conventions over configurations and prioritizing developer happiness. The document outlines some of Rails' core concepts like active record and convention over configuration.
The document discusses concepts related to distributed systems and web services architectures. It covers topics like remote procedure calls (RPC), stubs/skeletons, and standards like SOAP, WSDL, and UDDI. Examples of RPC implementations include Sun RPC, DCE RPC, CORBA, and Java RMI. The document also references concepts from the Matrix movies like the Oracle, the red/blue pills, and characters like Morpheus, Cypher, and Trinity.
This document provides an overview and agenda for a Ruby on Rails tutorial part 1. It discusses installing Ruby and Rails on Windows, creating a simple DailyLog application to demonstrate the Rails framework, and using the MVC architecture and RESTful design. It also covers generating scaffolds, models, controllers and views, routing and helpers. The document concludes with a section on unit testing in Rails.
The document provides instructions for using a Keithley 4200 semiconductor characterization system (4200-SCS) to perform current-voltage (I-V) measurements and analyze the results. It introduces the 4200-SCS, describes how to set up and execute an I-V test using the Keithley Interactive Test Environment (KITE) software, store and export measurement data and curves, and utilize additional features for automated testing and data analysis.
The document discusses Windows compatibility features, including: - The Windows Resource Protection (WRP) protects system files. - The Program Compatibility Assistant (PCA) is triggered when programs fail to install or run correctly. - Driver signing and file signature verification help ensure only trusted software runs on the system. - The document also covers installation detection technology, user account control features, and compatibility modes.
This document provides an overview of the Xen API and how it can be used with JRuby. The Xen API allows for managing virtual machines and their resources through a standardized interface. It uses XML-RPC to expose methods that can be called from various programming languages. JRuby allows accessing the Xen API through Ruby code and RubyGems by wrapping the underlying C/C++ libvirt library. Examples are given showing how to connect to a Xen host, get information on VMs, and reboot a VM using the Xen API via Ruby code.
The document describes the directory structure of a website located at ftp://etoptek.com.tw/www. It includes directories for drivers, images, manuals, and support documentation. Many of the directories contain subdirectories that further organize the files by manufacturer, device, or operating system. The website also contains HTML files for product information and support pages in both Chinese and English.
The document summarizes optimization of IPDC (Intel Internet Data Center) performance. It discusses common system and application level performance issues including memory configuration, storage configuration, BIOS settings, and multi-threaded application design issues like locking granularity, concurrency, and thread pool selection. It provides examples of how optimizing these areas through techniques like SSD usage, lock splitting, and using thread building block libraries can improve performance.
SD is a peer-to-peer (P2P) bug tracking system that allows users to track bugs and work even when offline or without reliable network access. It was created by Jesse Vincent, the founder of Best Practical, because existing bug tracking solutions did not meet his needs as someone who spends a lot of time traveling without reliable WiFi access. SD synchronizes issues and changes across devices and other issue trackers using a distributed model rather than depending on a centralized network infrastructure.
This document provides an overview of Microsoft's client technology strategy, including new features for Windows 7 like multi-touch support and Jump Lists, improvements to Internet Explorer 8, and technologies like the Windows Ribbon interface, Federated Search, and Silverlight. It discusses the development approaches and APIs available for multi-touch applications on Windows, customizing the Windows 7 taskbar, and accelerators in IE8 to improve the browsing experience.
The document provides an overview of domain-specific languages (DSLs) and language-oriented programming. It discusses how DSLs are specialized computer languages for a particular domain and provides examples of DSLs. It also describes how language-oriented programming uses DSLs to define programming abstractions and implementations through language tools and workbenches. Finally, it outlines how a DSL for object-relational mapping was developed in PHP using a lexer, parser, and Eclipse integration.
This document summarizes the key new features in Ruby on Rails 2.1, which was released on June 1, 2008. It introduces features like timezones support, dirty tracking, gem dependencies, named scopes, UTC-based migrations, and better caching. It also provides Chinese translations of chapters from the book "Ruby on Rails 2.1 - What's New" to explain ActiveRecord improvements like SUM method expressions, HAS_ONE through option, and named scopes.
This document provides instructions on how to use Perl on Windows and call functions between Perl and x86 code. It discusses using ActivePerl to run Perl on Windows, calling DLL functions from Perl using Win32::API, calling x86 code from Perl using signal handlers, and calling Perl subs from x86 code. Examples are provided for each technique.
2009/04/10 GREE Labs で開かれた勉強会の資料です。オープニングと岩松さんの New Maintainer Process 資料と共にお楽しみください。 (ODF版でアップロードしたらフォントがガタガタなので、PDFでアップロードし直ししたい…)
The document discusses the opportunity for the LCOS display industry in China. It begins with an introduction to LCOS (Liquid Crystal on Silicon) microdisplays, which have the highest resolution of any microdisplay technology. It then discusses trends in the microdisplay industry and market, including growing applications for rear projection HDTVs, pico/nano projection systems, and large video walls. The document proposes that LCOS technology can help drive the development of the display industry in China.
This document discusses the OWASP Top 10, which is a list of the most critical web application security risks. It provides details on each of the top 10 risks, including examples of how they can occur and recommendations for how to address them. The top risks are: #1- Cross-Site Scripting (XSS), #2 - SQL Injection, #3 - Malicious File Execution, #4 - Insecure Direct Object Reference, #5 - Cross-Site Request Forgery (CSRF), #6 - Security Misconfiguration, #7 - Broken Authentication and Session Management, #8 - Insecure Cryptographic Storage, #9 - Insecure Communication, and #10 - Failure to Restrict URL Access. For each
This document provides information about the Sysview Confidential DataBoard, a digital signage and interactive whiteboard product. It describes the key features and functions of the DataBoard, including its touchscreen capabilities, automatic recording and sharing of audio and visual materials, ability to display various types of media content, and remote management system. Applications of the DataBoard discussed include modern digital education, conferences, multimedia classrooms, mobile cinemas, and digital signage.
The document discusses the development of a web application using Adobe Flex and ActionScript. It describes creating a framework, displaying search result location information and listings, and implementing features like search and map clicks. The application will be compiled into a SWF file to run on Flash Player or as an AIR application.
PyPy takes a tracing just-in-time (JIT) compilation approach to optimize Python programs. It works by first interpreting the program, then tracing hot loops and optimizing their performance by compiling them to machine code. This JIT compilation generates and runs optimized trace trees representing the control flow and operations within loops. If guards placed in the compiled code fail, indicating the optimization may no longer apply, execution falls back to the interpreter or recompiles the trace with additional information. PyPy's approach aims to optimize the most common execution paths of Python programs for high performance while still supporting Python's dynamic nature.
This document discusses making Linux capable of hard real-time performance. It begins by defining hard and soft real-time systems and explaining that real-time does not necessarily mean fast but rather determinism. It then covers general concepts around real-time performance in Linux like preemption, interrupts, context switching, and scheduling. Specific features in Linux like RT-Preempt, priority inheritance, and threaded interrupts that improve real-time capabilities are also summarized.
與其死板傳授片面的知識,還不如讓學生有能力、 有勇氣面對資訊科技產業的種種挑戰 − GUTS = General Unix Talk Show − 向 Unix 作業系統學習,同時銜接最新產業發展,全程採用活躍 的開放原始碼技術,不用擔心學習的是「屠龍術」 目標:開拓視野,從做中學習、從做中肯定自己
號稱與資訊科技產業「零距離」、兼顧理論和實務,由第一線軟體工程師全程規劃的精實課程,目標:模擬產業生態和規格、銜接產業界的發展水平、採用業界標準的開發工具與流程 、100% 應用活躍的開放原始碼軟體,以及提供資訊科技工作諮詢和模擬面試
三大主軸 – ARM 組織和結構 – 作業系統界面和設計 – 系統效能、可靠度和安全議題