Winter 2015 SPO600 Platform Specific Code Presentation
Assignment
- Select one of the topics below by placing your name in the "Student" column (first come, first served - one student per topic).
- During week 5, research the topic and prepare a 3- to 5-minute presentation to teach the class.
- Be prepared to teach this presentation during week 6. You may want to draw whiteboard diagrams, use presentation slides, or have a 1-page handout. Please avoid taking more than 5 minutes in total for your presentation.
Deadlines
- Topic selection: 9:50 am, Tuesday, February 10 (End of the scheduled Tuesday class in Week 5)
- Presentation ready: 8:00 am, Tuesday, February 17 (You must be prepared to present before the scheduled Tuesday class in Week 6)
FAQ
- Q: How much detail should the presentation include?
- A: Each of these topics is pretty small and straightforward. Where appropriate, provide some type of resource for future reference -- a link to an existing web resource, a 1-page handout, or a blog post or wiki page about the topic. Your presentation should include:
- The Issue: A description of the type of platform-specific code that falls into this category - What it is and why programmers write code in this way. Include a short example of actual code.
- The Problem: When code written in this particular way has problems (e.g., when moved to a platform that has...) and what issues appear (program crashes, wrong results, won't compile, ...). Include bug reports or other evidence of this problem actually surfacing.
- The Solution: How code can be written in a portable way, avoiding platform-specific issues. Include a short example of actual code that solves the problem in a platform-neutral way. Consider advances in the language standards, Compiler Intrinsics, and Compiler Optimizations as part of your solution.
- A: Each of these topics is pretty small and straightforward. Where appropriate, provide some type of resource for future reference -- a link to an existing web resource, a 1-page handout, or a blog post or wiki page about the topic. Your presentation should include:
- Q: How will this be marked?
- A: In week 6, I will ask you to write a short blog post summarizing your presentation.
- Q: What about the topics not selected by a student?
- A: I'll teach the unclaimed topics, if there are any.
- Q: Can we work with others preparing our topic?
- A: Yes. In many cases, one topic is complimentary to another topic, and it would be great if you coordinated on your presentations.
- Q: What resources should I use?
- A: There are resources on the web as well as on this wiki (for example, see the Assembly Language category on this wiki).
- Q: Are there any classes scheduled during Week 5?
- A: No. Your professor will be at Linaro Connect. However, the classroom is reserved for our use, and you're welcome to use it to discuss your presentation ideas with classmates.
Topics
Category | Topic | Presenter Name | Links to resources (Wiki page, handout, web resources) | Link to blog post on this topic |
---|---|---|---|---|
Access to features not available in some versions of C / C++ | Atomic operations | Thana Annis | ||
Access to features not available in some versions of C / C++ | Memory barriers | Cha Li | ||
Access to features not available in some versions of C / C++ | Low-level device access | James Boyer | ||
Access to features not available in some versions of C / C++ | Interrupt handling | Jan Ona | ||
Access to features not available in some versions of C / C++ | Cryptographic instructions | Gary Chau | ||
Access to features not available in some versions of C / C++ | Single instruction multiple data (SIMD) instructions | Bradly Hoover | ||
Access to features not available in some versions of C / C++ | Run-time CPU feature identification (cpuid) | Bruno Pereira | ||
Access to features not available in some versions of C / C++ | High-resolution counter access | Danylo Medinski | ||
Assumptions about the system which can vary between architectures | Default size of variable types | Artem Luzyanin | ||
Assumptions about the system which can vary between architectures | Equivalence between variable types (e.g., int and long) | Alfred Tsang | ||
Assumptions about the system which can vary between architectures | Layout of arrays in memory | Hosung Hwang | ||
Assumptions about the system which can vary between architectures | Alignment requirements | Nicolas Ramkay | ||
Assumptions about the system which can vary between architectures | Endianness (order of data stored in memory) | Yan Song | ||
Assumptions about the system which can vary between architectures | Direction of stack growth | Alan Lam | ||
Assumptions about the system which can vary between architectures | Target triplet | Justin Grice | ||
Assumptions about the system which can vary between architectures | Jiffies per second | Stephen Ruthland | ||
Assumptions about the system which can vary between architectures | Page size | Hong Zhan Huang | Refer to blog post for sources used | https://joulecpa.wordpress.com/2015/02/28/spo600-page-size-presentation/ |
Assumptions about the system which can vary between architectures | Pointer size vs. integer size | Liam Martin | ||
Assumptions about the system which can vary between architectures | FPU rounding | Max LeFevre | ||
Assumptions about the system which can vary between architectures | Cost of alignment fixups | Dawood Shirzada | ||
Assumptions about the system which can vary between architectures | Memory controller design | |||
Assumptions about the system which can vary between architectures | Syscall numbering | Anson Tang |