Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
読みやすいアセンブリ言語
Search
Cybozu
PRO
March 14, 2025
Technology
1
38
読みやすいアセンブリ言語
第14期サイボウズ・ラボユース成果発表会
https://cybozu.connpass.com/event/347931/
川崎 正真
Cybozu
PRO
March 14, 2025
Tweet
Share
More Decks by Cybozu
See All by Cybozu
PSIRTでAIテストを実施するまでの道のり
cybozuinsideout
PRO
0
85
無理なく続けるサイボウズの社内勉強会
cybozuinsideout
PRO
1
1.2k
分散システムにおける 無兆候データ破損の影響について
cybozuinsideout
PRO
1
57
タンパク質構造のシミュレーションソフトウェア試行錯誤
cybozuinsideout
PRO
1
46
Wasmで拡張できる軽量マークアップ⾔語Brack(後編)
cybozuinsideout
PRO
1
30
Wasmで拡張できる軽量マークアップ⾔語Brack(前編)
cybozuinsideout
PRO
1
35
kintone開発組織のAWSエンジニアの紹介
cybozuinsideout
PRO
0
230
kintone開発組織のサービスプラットフォームチームの紹介
cybozuinsideout
PRO
0
120
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
6
41k
Other Decks in Technology
See All in Technology
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
120
AI技術トレンド勉強会 #1MCPの基礎と実務での応用
nisei_k
1
180
開発効率と信頼性を両立する Ubieのプラットフォームエンジニアリング
teru0x1
0
140
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
770
New Cache Hierarchy for Container Images and OCI Artifacts in Kubernetes Clusters using Containerd / KubeCon + CloudNativeCon Japan
pfn
PRO
0
150
API の仕様から紐解く「MCP 入門」 ~MCP の「コンテキスト」って何だ?~
cdataj
0
150
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.4k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
38k
OpenTelemetry Collector internals
ymotongpoo
5
530
自分を理解するAI時代の準備 〜マイプロフィールMCPの実装〜
edo_m18
0
110
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
310
基調講演: 生成AIを活用したアプリケーションの開発手法とは?
asei
1
130
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
For a Future-Friendly Web
brad_frost
179
9.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Fireside Chat
paigeccino
37
3.5k
Thoughts on Productivity
jonyablonski
69
4.7k
Designing Experiences People Love
moore
142
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
130
Automating Front-end Workflow
addyosmani
1370
200k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Rails Girls Zürich Keynote
gr2m
94
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Transcript
読みやすいアセンブリ言語 14期ラボユース生 (言語処理系開発コース、メンター:川合さん) 川崎正真
概要 ・作品:sentasm、mnasm(仮) ・目的:読みやすいアセンブリ言語の作成 ・動機:自作cコンパイラのデバッグが大変だった ・開発の途中目標: 自作cコンパイラ(開発途中)で出力して、アセンブルできる
なぜ、デバッグが大変だったか ・スタックマシン方式だった ・アセンブリ言語に慣れてい無かった 1) 命令に慣れていなかった 2) 読み方に慣れていなかった
アセンブリ言語1 ・名前:sentasm(sentence + asm) ・開発期間:24年6月ー11月 ・特徴:英語に寄せた文法
アセンブリ言語1 ・fizzbuzzのcコードを コンパイルした結果の一部 gasだと、movsxd
アセンブリ言語1 ・読みづらい 1) 実際の命令との対応を覚えるのが大変 2) コードブロック単位の意味の把握が大変 ・全ての命令に前置詞などを意味を考えて、当てはめるのは困難
アセンブリ言語2 ・名前:mnasm(仮)(名前募集中です) ・現在開発中 ・特徴:ブロック、2種類のマクロ
アセンブリ言語2 ・fizzbuzzのcコードを コンパイルした結果の一部
アセンブリ言語2 ・マクロ1 ・cのdefineマクロと同様のもの ・呼び出し:@label{...}(...) ・マクロ2 ・rustのproc_macroのドメイン特化言語(DSL)版のようなもの ・DSL をアセンブル時に評価して、入力を加工し、展開 ・呼び出し:@[input]
アセンブリ言語2 マクロ定義の部分は 140行
アセンブリ言語2 ・ブロックの導入で比較的読みやすくなった ・マクロの定義の部分が大きくなる
比較 gas sentasm mnasm
今後 ・DSLの強化 ・自作cコンパイラにmnasmのインラインアセンブリの追加 ・自作cコンパイラのセルフホスト ・mnasmのDSLをsentasmや簡易cコンパイラを実装できるようにしたい ・機械語の出力 ・型の勉強
まとめ・感想 ・「読みやすさ」は、観点による ・「読みやすさ」だけではないので、そこも考えていきたい ・川合さんをはじめ、サポートしていただいた方々、 本当にありがとうございました!
ありがとうございました