Submit Search
Upload
自作言語でお絵描き
•
Download as PPTX, PDF
•
0 likes
•
683 views
uchan_nos
Follow
自作言語OpeLaでSDLを使い絵を描く方法を説明します。SDLはC言語で作られており、OpeLaから簡単に使えます。後半は可変長引数の対応方針を紹介します。
Read less
Read more
Software
Report
Share
Report
Share
1 of 18
Download now
Recommended
[Regional Scrum Gathering Tokyo 2021] Scrum with OODA loop
[Regional Scrum Gathering Tokyo 2021] Scrum with OODA loop
Woohyeok Kim
セキュリティとアジャイル開発のいい関係について考える
セキュリティとアジャイル開発のいい関係について考える
Makoto Iguchi
数字から読む信号機の傾向と精度2020
数字から読む信号機の傾向と精度2020
Jun Sasaki
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
Hiromasa Oka
ミクシィ決算説明資料 FY2008 2Q
ミクシィ決算説明資料 FY2008 2Q
Maki Fujita
XS Japan 2008 Citrix Japanese
XS Japan 2008 Citrix Japanese
The Linux Foundation
文献紹介:Semantic-based information retrieval in support of concept design.
文献紹介:Semantic-based information retrieval in support of concept design.
Shin Sano
RSGT2021 Bilingual cross-cultural discussion 日本人と外国人のディスカッション: How to acceler...
RSGT2021 Bilingual cross-cultural discussion 日本人と外国人のディスカッション: How to acceler...
Rochelle Kopp
Recommended
[Regional Scrum Gathering Tokyo 2021] Scrum with OODA loop
[Regional Scrum Gathering Tokyo 2021] Scrum with OODA loop
Woohyeok Kim
セキュリティとアジャイル開発のいい関係について考える
セキュリティとアジャイル開発のいい関係について考える
Makoto Iguchi
数字から読む信号機の傾向と精度2020
数字から読む信号機の傾向と精度2020
Jun Sasaki
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
Hiromasa Oka
ミクシィ決算説明資料 FY2008 2Q
ミクシィ決算説明資料 FY2008 2Q
Maki Fujita
XS Japan 2008 Citrix Japanese
XS Japan 2008 Citrix Japanese
The Linux Foundation
文献紹介:Semantic-based information retrieval in support of concept design.
文献紹介:Semantic-based information retrieval in support of concept design.
Shin Sano
RSGT2021 Bilingual cross-cultural discussion 日本人と外国人のディスカッション: How to acceler...
RSGT2021 Bilingual cross-cultural discussion 日本人と外国人のディスカッション: How to acceler...
Rochelle Kopp
Mhada
Mhada
NadeemQureshi31
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证
Chui-Wen Chiu
sigfpai73-kaji
sigfpai73-kaji
Hiroshi Ono
網路、設計、使用者經驗
網路、設計、使用者經驗
Charles (XXC) Chen
S30
S30
TH Schee
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
Azerbaijan Laws
Search Engines Chapter 1 Summary
Search Engines Chapter 1 Summary
sleepy_yoshi
Xrdp
Xrdp
Yuichiro Naito
20210118 holo lensmeetupvol24_lt_holomon
20210118 holo lensmeetupvol24_lt_holomon
Holo Mon
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—
Fumihiko Kinoshita
誰動了川普的選票? Who moved Trump's votes?
誰動了川普的選票? Who moved Trump's votes?
Aman Tong
田町deナイト 質問集
田町deナイト 質問集
Yoji Kanno
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1
denet_tech_tokyo
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Yusuke Kawasaki
examdoor
examdoor
bishal paul
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
taiwanweb20
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
Typhon 666
普通の見積り勉強会 番外編
普通の見積り勉強会 番外編
Fumihiko Kinoshita
Hackday Ml
Hackday Ml
NLPseminar
QM-078-企業導入六標準差之個案探討
QM-078-企業導入六標準差之個案探討
handbook
秩序从哪里来?
秩序从哪里来?
guest8430ea2
More Related Content
What's hot
Mhada
Mhada
NadeemQureshi31
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证
Chui-Wen Chiu
sigfpai73-kaji
sigfpai73-kaji
Hiroshi Ono
網路、設計、使用者經驗
網路、設計、使用者經驗
Charles (XXC) Chen
S30
S30
TH Schee
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
Azerbaijan Laws
Search Engines Chapter 1 Summary
Search Engines Chapter 1 Summary
sleepy_yoshi
Xrdp
Xrdp
Yuichiro Naito
20210118 holo lensmeetupvol24_lt_holomon
20210118 holo lensmeetupvol24_lt_holomon
Holo Mon
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—
Fumihiko Kinoshita
誰動了川普的選票? Who moved Trump's votes?
誰動了川普的選票? Who moved Trump's votes?
Aman Tong
田町deナイト 質問集
田町deナイト 質問集
Yoji Kanno
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1
denet_tech_tokyo
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Yusuke Kawasaki
examdoor
examdoor
bishal paul
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
taiwanweb20
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
Typhon 666
普通の見積り勉強会 番外編
普通の見積り勉強会 番外編
Fumihiko Kinoshita
Hackday Ml
Hackday Ml
NLPseminar
What's hot
(20)
Mhada
Mhada
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证
sigfpai73-kaji
sigfpai73-kaji
網路、設計、使用者經驗
網路、設計、使用者經驗
S30
S30
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
俄语GOST标准,技术规范,法律,法规,中文英语,目录编号RG 3705
Search Engines Chapter 1 Summary
Search Engines Chapter 1 Summary
Xrdp
Xrdp
20210118 holo lensmeetupvol24_lt_holomon
20210118 holo lensmeetupvol24_lt_holomon
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—
誰動了川普的選票? Who moved Trump's votes?
誰動了川普的選票? Who moved Trump's votes?
田町deナイト 質問集
田町deナイト 質問集
Assembly Definition あれやこれ
Assembly Definition あれやこれ
Kintone 導入サービス キャンペーン_20140903-1
Kintone 導入サービス キャンペーン_20140903-1
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
examdoor
examdoor
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
創業家研習營-7分鐘創意簡報技巧,Mr.6劉威麟
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
普通の見積り勉強会 番外編
普通の見積り勉強会 番外編
Hackday Ml
Hackday Ml
Similar to 自作言語でお絵描き
QM-078-企業導入六標準差之個案探討
QM-078-企業導入六標準差之個案探討
handbook
秩序从哪里来?
秩序从哪里来?
guest8430ea2
Apology Of Socrates
Apology Of Socrates
huquanwei
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5
opportunity service
Republic 3 4
Republic 3 4
huquanwei
From Virtual Worlds To The 3 D Web
From Virtual Worlds To The 3 D Web
Jacob - HIRING NOW jtlindman.gmail
[Nahu] - 'ilm Kalam (arabic)
[Nahu] - 'ilm Kalam (arabic)
Syukran
Tamareen
Tamareen
adelkabbary1
Green IT
Green IT
Beat Communication
产业
产业
University of Arizona
AI&medical imaging in japan 2018
AI&medical imaging in japan 2018
yoshihiro todoroki
Swasthya siksha unnayan patrika
Swasthya siksha unnayan patrika
Prabir Chatterjee
980430寶來期貨台股盤後日報
980430寶來期貨台股盤後日報
guest92ee6e
Republic 1 2
Republic 1 2
huquanwei
ボストンの澄んだ空の下で考えたこと(LT編)
ボストンの澄んだ空の下で考えたこと(LT編)
Takeshi Kakeda
高中数学知识
高中数学知识
Xu jiakon
Arabic E Book 25 Success Stories[1]
Arabic E Book 25 Success Stories[1]
anas0666
Webken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User Experience
Nobuya Sato
Effective E Mail In Arabic By Gamal Arafa
Effective E Mail In Arabic By Gamal Arafa
Gamal Arafa
IA & UCD/UXD
IA & UCD/UXD
Charles (XXC) Chen
Similar to 自作言語でお絵描き
(20)
QM-078-企業導入六標準差之個案探討
QM-078-企業導入六標準差之個案探討
秩序从哪里来?
秩序从哪里来?
Apology Of Socrates
Apology Of Socrates
Opportunity Magazine 2008-11-03 Vol.5
Opportunity Magazine 2008-11-03 Vol.5
Republic 3 4
Republic 3 4
From Virtual Worlds To The 3 D Web
From Virtual Worlds To The 3 D Web
[Nahu] - 'ilm Kalam (arabic)
[Nahu] - 'ilm Kalam (arabic)
Tamareen
Tamareen
Green IT
Green IT
产业
产业
AI&medical imaging in japan 2018
AI&medical imaging in japan 2018
Swasthya siksha unnayan patrika
Swasthya siksha unnayan patrika
980430寶來期貨台股盤後日報
980430寶來期貨台股盤後日報
Republic 1 2
Republic 1 2
ボストンの澄んだ空の下で考えたこと(LT編)
ボストンの澄んだ空の下で考えたこと(LT編)
高中数学知识
高中数学知识
Arabic E Book 25 Success Stories[1]
Arabic E Book 25 Success Stories[1]
Webken 03: Project Design for Optimaizing User Experience
Webken 03: Project Design for Optimaizing User Experience
Effective E Mail In Arabic By Gamal Arafa
Effective E Mail In Arabic By Gamal Arafa
IA & UCD/UXD
IA & UCD/UXD
More from uchan_nos
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
uchan_nos
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
uchan_nos
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器
uchan_nos
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路
uchan_nos
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
uchan_nos
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
uchan_nos
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返る
uchan_nos
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
uchan_nos
Security Nextcamp remote mob programming
Security Nextcamp remote mob programming
uchan_nos
Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPS
uchan_nos
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
uchan_nos
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG
uchan_nos
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free os
uchan_nos
Building libc++ for toy OS
Building libc++ for toy OS
uchan_nos
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019
uchan_nos
Introduction of security camp 2019
Introduction of security camp 2019
uchan_nos
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
uchan_nos
Timers
Timers
uchan_nos
USB3 host driver program structure
USB3 host driver program structure
uchan_nos
More from uchan_nos
(20)
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
小型安価なFPGAボードの紹介と任意波形発生器
小型安価なFPGAボードの紹介と任意波形発生器
トランジスタ回路:エミッタ接地増幅回路
トランジスタ回路:エミッタ接地増幅回路
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa: セルフホストなOSと言語処理系を作るプロジェクト
OpeLa 進捗報告 at 第23回自作OSもくもく会
OpeLa 進捗報告 at 第23回自作OSもくもく会
サイボウズ・ラボへ転籍して1年を振り返る
サイボウズ・ラボへ転籍して1年を振り返る
USB3.0ドライバ開発の道
USB3.0ドライバ開発の道
Security Nextcamp remote mob programming
Security Nextcamp remote mob programming
Langsmith OpeLa handmade self-hosted OS and LPS
Langsmith OpeLa handmade self-hosted OS and LPS
OpeLa セルフホストなOSと言語処理系の自作
OpeLa セルフホストなOSと言語処理系の自作
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
1を書いても0が読める!?隠れた重要命令INVLPG
1を書いても0が読める!?隠れた重要命令INVLPG
レガシーフリーOSに必要な要素技術 legacy free os
レガシーフリーOSに必要な要素技術 legacy free os
Building libc++ for toy OS
Building libc++ for toy OS
プランクトンサミットの歴史2019
プランクトンサミットの歴史2019
Introduction of security camp 2019
Introduction of security camp 2019
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
Timers
Timers
USB3 host driver program structure
USB3 host driver program structure
Recently uploaded
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
ThousandEyes
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
ICS
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
bodapatigopi8531
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Alberto González Trastoy
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
ABDERRAOUF MEHENNI
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
OnePlan Solutions
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Steffen Staab
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
kalichargn70th171
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
panagenda
Software Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
Arshad QA
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
Andolasoft Inc
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
Willy Marroquin (WillyDevNET)
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
aagamshah0812
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
Wave PLM
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
Recently uploaded
(20)
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
Software Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
自作言語でお絵描き
1.
自作言語でお絵描き 2021年1月3日 第24回自作OSもくもく会 @uchan_nos
2.
自己紹介 名前:内田公太 Twitter:@uchan_nos 東京工業大学 情報工学系
特任助教(週2) サイボウズ・ラボ株式会社(週3) 活動 osdev-jpの運営 OS、言語処理系の開発 『30日でできる! OS自作入門』 の校正を担当(2006年) 『自作エミュレータで学ぶ x86アーキテクチャ』著(2015年)
3.
OpeLaプロジェクトとは OpeLa: Operating and
Language processing system OSと言語処理系を全部自作するプロジェクト OS アセンブラ コンパイラ リンカ ライブラリ 特徴:完全なセルフホスト
4.
OpeLaで書き初め
5.
OpeLaで書き初めの仕組み OpeLaでSDLを使う SDLでウィンドウ、背景、線を表示 SDL: Simple DirectMedia
Layer マルチメディアを扱うライブラリ シンプルなライブラリ故に対応機種 が幅広い C言語用インタフェースなのでいろ んな言語から簡単に使える! ロゴが明滅する様子
6.
SDLの関数を呼び出す SDLの関数をextern宣言し、呼び出す ヘッダファイルは読み込めないのでマクロは使えない SDL_Window*の代わりにint* func main() int
{ if SDL_Init(0x20) < 0 { // SDL_INIT_VIDEO printf("Failed to initialize SDL: %sn", SDL_GetError()); return 1; } printf("Creating a windown"); window := SDL_CreateWindow("SDL by OpeLa", 0x1fff0000, 0x1fff0000, 300, 200, 0); extern "C" SDL_Init func(flag uint) int; extern "C" SDL_GetError func() *byte; extern "C" SDL_CreateWindow func(title *byte, x, y, w, h int, flags uint) *int;
7.
イベントポーリング SDL_Eventの代わりに[16]uint32 var event [16]uint32; for
{ for SDL_PollEvent(&event[0]) != 0 { if event[0] == uint32(256) { // SDL_QUIT SDL_DestroyWindow(window); SDL_Quit(); return 0; } }
8.
グラデーション背景 Colorを1ずつ変化させ、黒→青緑に徐々に変化させる SDL_SetRenderDrawColorで描画色を設定し SDL_RenderClearで背景を塗りつぶす color += dir; if
color == 255 { dir = -1; } else if color == 0 { dir = 1; } SDL_SetRenderDrawColor(renderer, 0, color, color, 255); SDL_RenderClear(renderer);
9.
ロゴ 長方形と直線の描画を駆使してロゴを描く SDL_SetRenderDrawColor(renderer, 0, 0,
0, 255); // O DrawRect(renderer, 30, 60, logo_x + 40*0, logo_y); // p DrawRect(renderer, 30, 30, logo_x + 40*1, logo_y + 30); SDL_RenderDrawLine(renderer, logo_x + 40*1, logo_y + 60, logo_x + 40*1, logo_y + 90); func DrawRect(ren *int, w, h, x, y int) { var r [4]int32; r[0] = x; r[1] = y; r[2] = w; r[3] = h; SDL_RenderDrawRect(ren, &r[0]); }
10.
SDLの関数を呼び出すときの注意 SDLに限らないが、関数を呼び出す際はスタックのアライメント に注意が必要 参考「x86-64 モードのプログラミングではスタックのアライメントに気を付けよう」
https://uchan.hateblo.jp/entry/2018/02/16/232029 関数を呼び出す直前でRSPが16の倍数でなければならない void Call(std::ostream& os, Register addr) override { os << " push rbxn"; os << " mov rbx, rspn"; os << " and rsp, -16n"; os << " call " << RegName(addr) << "n"; os << " mov rsp, rbxn"; os << " pop rbxn"; } RBXは関数呼び出し前後で保存されている必要があるから、スタックに保存してから使う and rsp, -16 = and rsp, 0xf…f0
11.
SDLを使うサンプルのビルド sdl.oplをコンパイルしてsdl.sを得て libSDL2.soとリンクする cat sdl.opl |
../../opelac > sdl.s cc sdl.s -lSDL2
12.
可変長引数の対応
13.
OpeLaで可変長引数 可変長引数:int printf(const char*
format, ...);の... C言語で可変個の引数を渡す仕組み 呼び出し側 x86-64(SystemV AMD64 ABI) 普通の引数と同様に、レジスタ渡し RDI, RSI, RDX, RCX, R8, R9 AArch64(EABI) 可変長引数だけスタック渡し format 1 2 3 format 1 2 3 RDI RSI RDX RCX X0 SP
14.
OpeLaの仕組みと可変長引数 OpeLaはスタックマシン 式はスタックに値を積む 「1 + 2」は右図 printf("%d:%d",
1, 2) x86-64:いったんスタック に引数を積み、最後にレジス タへ転写すれば良い 普通の関数呼び出しと同じ! 1 SP 2 1 SP 3 SP 文字列へのアドレス 1 2 SP for (int i = 0; i < num_args; ++i) { asmgen->Pop64(os, kArgRegs[i]); }
15.
AArch64で可変長引数 printf("%d:%d", 1, 2) AArch64では、途中までレジ スタへ転写すればいいので は? →ダメだった AArch64ではスタックに式の 値を8バイト飛ばしで積んで いるから 文字列へのアドレス 1 2 SP レジスタへ スタックに残す 文字列へのアドレス 空き 1 SP 空き 2 空き AArch64だと 実はこうなってる AppleのABIではこうなっているが、Armの世界で一般 的なEABIでは可変長引数もレジスタ渡しらしい。 https://developer.apple.com/documentation/xcode/ writing_arm64_code_for_apple_platforms
16.
なぜAArch64だと8バイト飛ばしなの? 16の倍数でないSPがベースアドレスとして使われると例外発生 str x0, [sp,
#-16]! Spから16を引き、そのアドレスにx0の値を書く だから、opelacは8バイト飛ばしでスタックに値を積む →そのままでは可変長引数として使えない!
17.
私の今日の目標 AArch64で可変長引数をサポートする 引数省略記号「...」にパーサを対応させ、 可変長引数の部分はスタックに残し、 スタックの8バイトの隙間を詰め、 最後に関数を呼び出す とうまく行くかなあ…? 可変長引数1 空き 可変長引数2 SP 空き 可変長引数3 空き コピー コピー 可変長引数4 コピー
18.
OpeLaに興味ある人を募集してます 開発の様子は Twitterの@uchan_nos osdev-jp Slackの#opelaチャンネル に書いてます 今は言語設計とコンパイラ実装を並走中 「配列リテラルを実装するかどうか」 「sizeof(uint2)は何を返すべきか」 などなど… 設計すべき部分がたくさんある 一緒にお話ししながらアイデアを練っていきたいです Wanted ・言語設計の話し相手 ・OpeLaロゴ制作 ・アプリ製作 ・実装のお手伝い
Download now